Запуск страницы, которой нужно время для результата с помощью cronjob - PullRequest
1 голос
/ 12 февраля 2020

У меня есть страница php (код ниже), и с этой страницы я получаю информацию с 70 сайтов и отправляю письмо. Эта информация о версии сайта и размере его файлов.

Когда я вручную вызываю контрольную страницу в браузере, процесс завершается примерно через минуту, и на все сайты отправляется электронное письмо.

Однако, когда я звоню с помощью cronjob, почта приходит, но, вероятно, потому что она не получает информацию, она этого не делает.

Возможно, cronjob не работает как руководство вызов. Что я могу сделать?

    $yp_PathRoot = $_SERVER['DOCUMENT_ROOT'];
session_start();

$yp_PathSettings = '/panel/functions/settings.php';
include_once($yp_PathRoot . $yp_PathSettings);

function zCheck($myWebSite){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://$myWebSite/panel/?qc=1");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
    $output2 = curl_exec($ch);
    curl_close($ch); 
    return $output2;
}

$array = array(
    "domain1.ext",
    "domain2.ext",
    ...
    "domain68.ext",
    "domain69.ext",
    "domain70.ext"
);

$myMessage = "";
foreach($array as $value)
{
    $checkedSite    = $value;
    $checkedValues  = zCheck($value);
    $exlodedValues  = explode('|', $checkedValues);

    $myCase                     = $exlodedValues[0];
    $klySoftwareSizeSF          = $exlodedValues[1];
    $errorAcceptableSize        = $exlodedValues[2];
    $showQuotaYakinSF           = $exlodedValues[3];
    $klyThemeAndImagesSizeSF    = $exlodedValues[4];
    $showQuotaHesapliSF         = $exlodedValues[5];
    $fromMailer                 = $exlodedValues[6];
    $myUserName                 = $exlodedValues[7];

    switch($myCase) {
        case 1:
            $statusMessage  = "There is an increase in the size of non-theme files. Check the error files. If there is no error file, look for another file with a larger size.";
            $quotaClass     = " style=\"color:black;\"";
            $softwareClass  = " style=\"color:red;\"";
            break;
        case 2:
            $statusMessage = "User uploaded images and files are about to fill the quota.";
            $quotaClass     = " style=\"color:orange;\"";
            $softwareClass  = " style=\"color:black;\"";
            break;
        case 3:
            $statusMessage = "The size of the images and files uploaded by the user has filled the quota.";
            $quotaClass     = " style=\"color:red;\"";
            $softwareClass  = " style=\"color:black;\"";
            break;
        case 4:
            $statusMessage = "Everything is OK.";
            $quotaClass     = " style=\"color:black;\"";
            $softwareClass  = " style=\"color:black;\"";
            break;
    }
    $myMessage =  $myMessage."<br/><b>".$checkedSite."</b><br/>Site checked. ".$statusMessage."<br/><table><tr $softwareClass><td>Software Size<td><td>: $klySoftwareSizeSF<td></tr><tr $quotaClass><td>Size of Themes and Images<td><td>: $klyThemeAndImagesSizeSF<td></tr><tr $quotaClass><td>Site Quota<td><td>: $showQuotaHesapliSF<td></tr></table>";
}

$fromMailer         = "\"Postman\" <from@domain.ext>";
$myUserName         = "Postman";
$mailFuncFrom       = "$fromMailer";
$mailFuncTo         = "\"Postman\" <to@domain.ext>";
$mailFuncSubject    = "Daily Quota Check";
$clientServerName   = $_SERVER['SERVER_NAME'];
$clientRequestUrl   = $_SERVER['REQUEST_URI'];
$clientUserName     = $myUserName;
$mailFuncContent    = "<b>Site:</b> $clientServerName<br/><b>> The page on which the message was sent:</b> $clientRequestUrl<br/><b>User:</b> $clientUserName<br/><br/>Hello,<br/>Daily check completed. The status of the sites is as follows.<br/><br/>$myMessage";
$mailSendMethod     = 1;

sendMyMail($mailFuncFrom,$mailFuncTo,$mailFuncSubject,$mailFuncContent,$mailSendMethod);

1 Ответ

0 голосов
/ 12 февраля 2020

Скорее всего, это связано с тем, что вы используете php функции, предназначенные для Интернета, в скрипте cron, который запускается с php -cli.

Многие веб-специфицированные c функции, такие как сеансы ($_SESSION и связанные с ними функции), файлы cookie, некоторые переменные c $_SERVER, заданные в Интернете, такие как $_SERVER['DOCUMENT_ROOT'] и $_SERVER['HTTP_HOST'] и другие, недоступны в заданиях cron.

Вам следует либо установите новый cron, чтобы сделать веб-запрос к текущему cron (если это имеет смысл), либо измените cron так, чтобы он не использовал веб-специфицированные c php функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...