Direct Admin 上的 Cronjobs 不工作
Cronjobs on Direct Admin is not working
我在 direct admin 上创建了一个 cronjobs,如果 运行 它将检查 curl =>>> 更改 mysql 中的值。但它不起作用。请帮我 @@。谢谢
这是我的代码:
<?php
class ControllerVemaybayCronJobapp
{
function index(){
$connect = $this->connect();
$query_routes_1 = $connect->query("SELECT * FROM **** where status = '0' GROUP BY routes ");
for ($result = array();
$row = $query_routes_1->fetch_assoc();
$result[array_shift($row)] = $row);
foreach ($result as $i => $aaa){
$routes = $aaa['routes'];
$detail_routes_2 = $connect->query("SELECT * FROM **** where routes = '" . $routes . "' AND status = '0' ");
for ($result2 = array();
$row2 = $detail_routes_2 ->fetch_assoc();
$result2[array_shift($row2)] = $row2);
foreach ($result2 as $t => $value1) {
$ngay = $value1['ngay'];
$thang = $value1['thang'];
$nam = $value1['nam'];
$min = $value1['minPrice'];
$max = $value1['maxPrice'];
$providers = $value1['providers'];
$startdate = $nam.$thang.'01';
$enddate = $nam.$thang.'31';
$bien = $this->getlist_ticketsofdate($routes,$startdate,$enddate);
foreach ($bien as $k => $value) {
$moi2 = array();
$moi = $value['c'];
$moi2 = $value['f'];
if($value['_id']['dim'] == $ngay ){
if($min <= $value['c'] && $value['c'] <= $max && strpos($providers, $value['p']) !== false){
$connect->query("UPDATE **** SET status='1' where customer_id = '" . $value1['customer_id'] . "' ");
break;
}else{
foreach ($moi2 as $key => $value2) {
if($min <= $value2['cp'] && $value2['cp'] <= $max && strpos($providers, $value2['p']) !== false){
$connect->query("UPDATE **** SET status='1' where customer_id = '" . $value1['customer_id'] . "' ") ;
break;
}
}
}
}
}
}
}
}
function connect(){
$servername = "****";
$username = "****";
$password = "****";
$databasename = "****";
$conn = new mysqli($servername, $username, $password,$databasename);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
return $conn;
}
function getlist_ticketsofdate($diadiem,$startDate,$endDate){
$url = '****';
$providers = array();
$providers[0] = '****';
$providers[1] = '****';
$providers[2] = '****';
$routes = array();
$routes[0] = $diadiem;
$headers = array();
$headers[] = 'Content-Type: application/json';
$headers[] = 'Connection:keep-alive';
$param = array(
'startDate' => $startDate,
'endDate' => $endDate,
'minPrice' => '0',
'maxPrice' => '700000',
'providers' => $providers,
'routes' => $routes,
'type' => 'date',
);
$data_string = json_encode($param);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$result_tickets = json_decode($response,true);
return $result_tickets;
}
}
?>
This is my cronjobs
Cron 作业可能无法直接在管理员上运行,因为它可能需要对某些进程进行身份验证。
样本php文件名mail.php
<?php
// the message
$msg = "First line of text\nSecond line of text";
// use wordwrap() if lines are longer than 70 characters
$msg = wordwrap($msg,70);
// send email
mail("someone@example.com","My subject",$msg);
?>
Cron 命令:
对于url
* * * * * wget http://example.com/mail.php &> /dev/null
对于路径
* * * * * <BASE DIR>/mail.php
这个 cron 作业每分钟发送一次邮件。
我在 direct admin 上创建了一个 cronjobs,如果 运行 它将检查 curl =>>> 更改 mysql 中的值。但它不起作用。请帮我 @@。谢谢 这是我的代码:
<?php
class ControllerVemaybayCronJobapp
{
function index(){
$connect = $this->connect();
$query_routes_1 = $connect->query("SELECT * FROM **** where status = '0' GROUP BY routes ");
for ($result = array();
$row = $query_routes_1->fetch_assoc();
$result[array_shift($row)] = $row);
foreach ($result as $i => $aaa){
$routes = $aaa['routes'];
$detail_routes_2 = $connect->query("SELECT * FROM **** where routes = '" . $routes . "' AND status = '0' ");
for ($result2 = array();
$row2 = $detail_routes_2 ->fetch_assoc();
$result2[array_shift($row2)] = $row2);
foreach ($result2 as $t => $value1) {
$ngay = $value1['ngay'];
$thang = $value1['thang'];
$nam = $value1['nam'];
$min = $value1['minPrice'];
$max = $value1['maxPrice'];
$providers = $value1['providers'];
$startdate = $nam.$thang.'01';
$enddate = $nam.$thang.'31';
$bien = $this->getlist_ticketsofdate($routes,$startdate,$enddate);
foreach ($bien as $k => $value) {
$moi2 = array();
$moi = $value['c'];
$moi2 = $value['f'];
if($value['_id']['dim'] == $ngay ){
if($min <= $value['c'] && $value['c'] <= $max && strpos($providers, $value['p']) !== false){
$connect->query("UPDATE **** SET status='1' where customer_id = '" . $value1['customer_id'] . "' ");
break;
}else{
foreach ($moi2 as $key => $value2) {
if($min <= $value2['cp'] && $value2['cp'] <= $max && strpos($providers, $value2['p']) !== false){
$connect->query("UPDATE **** SET status='1' where customer_id = '" . $value1['customer_id'] . "' ") ;
break;
}
}
}
}
}
}
}
}
function connect(){
$servername = "****";
$username = "****";
$password = "****";
$databasename = "****";
$conn = new mysqli($servername, $username, $password,$databasename);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
return $conn;
}
function getlist_ticketsofdate($diadiem,$startDate,$endDate){
$url = '****';
$providers = array();
$providers[0] = '****';
$providers[1] = '****';
$providers[2] = '****';
$routes = array();
$routes[0] = $diadiem;
$headers = array();
$headers[] = 'Content-Type: application/json';
$headers[] = 'Connection:keep-alive';
$param = array(
'startDate' => $startDate,
'endDate' => $endDate,
'minPrice' => '0',
'maxPrice' => '700000',
'providers' => $providers,
'routes' => $routes,
'type' => 'date',
);
$data_string = json_encode($param);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$result_tickets = json_decode($response,true);
return $result_tickets;
}
}
?>
This is my cronjobs
Cron 作业可能无法直接在管理员上运行,因为它可能需要对某些进程进行身份验证。
样本php文件名mail.php
<?php
// the message
$msg = "First line of text\nSecond line of text";
// use wordwrap() if lines are longer than 70 characters
$msg = wordwrap($msg,70);
// send email
mail("someone@example.com","My subject",$msg);
?>
Cron 命令:
对于url
* * * * * wget http://example.com/mail.php &> /dev/null
对于路径
* * * * * <BASE DIR>/mail.php
这个 cron 作业每分钟发送一次邮件。