PHP код альтернатива cron - PullRequest
       12

PHP код альтернатива cron

0 голосов
/ 31 декабря 2011

Я нашел некоторый php-код, который был "альтернативой cron". Я абсолютный новичок в PHP, так будет ли этот код работать в моей ситуации?Вот ее фрагмент:

<?php

if (($last + $interval) >= time()) {
// execute some script(s)
}

?>

Я пытаюсь отложить скрипт для отправки писем.Вот скрипт электронной почты:

<?php    
if(isset($_POST['email']))
{

 $headers = "From: Memory Jet <your_company@example.com>\r\n";


$to_visitor = $_POST["email"];
$common_data = $_POST["message"];
mail($to_visitor, "Your Memory", $common_data, $headers);

} ?>

Ответы [ 3 ]

2 голосов
/ 31 декабря 2011

Если вы хотите использовать предоставленный вами код, вам нужно будет вставить весь второй фрагмент кода (без тегов) в первую часть, где написано: // выполнить несколько сценариев.Вам также нужно будет определить переменные $ time и $ interval

Сказав это, я согласен с другими авторами, что это не является реальной альтернативой cron.Cron - это * nix-версия того, что вы можете знать как запланированные задачи в Windows.В основном вы пишете скрипт и используете cron для его планирования (без последующего вмешательства человека).С другой стороны, «альтернатива», представленная в вашем посте, работает только тогда, когда вы (или что-то еще) запускаете скрипт PHP вручную (например, обращаясь к нему через Интернет).

2 голосов
/ 31 декабря 2011

PHP "Альтернатива" cron, сохраните его как скрипт на вашем хосте и выполните его один раз. Он будет вызывать себя каждую секунду один раз, если внутренняя обработка занимает больше времени, это также займет больше времени, поэтому разветвите свои задачи в фоновом режиме, чтобы они не мешали выполнению сценария слишком долго:

<?php
header("X-PHP-CRON-STATUS: failure.");
isset($_SERVER["HTTPS"]) || die('failure.');
ignore_user_abort(true);
set_time_limit(0);
header("Content-Length: 8");
header("Connection: close");
header("X-PHP-CRON-STATUS: started.", 1);
echo 'started.';
flush();

/* run cron jobs in background / HTTP "background" script like this one */


$each = 1; /* second(s) */
$sofar = microtime(1) - $_SERVER['REQUEST_TIME'];
if (0 < ($wait = $each - $sofar))
{
    usleep($wait * 1000000);
}

$uri = 'http' . ($_SERVER["HTTPS"] ? 's' : '') . '://' . $_SERVER["SERVER_NAME"];
!$_SERVER["SERVER_PORT"] == "80" && $uri .= ':'.$_SERVER["SERVER_PORT"];
$uri .= $_SERVER["REQUEST_URI"];
file_get_contents($uri);

Подобные скрипты очень хрупкие, так что лучше возьмите настоящий крон, это того стоит. Для возни, это нормально.

1 голос
/ 31 декабря 2011

Cron будет использоваться, например, для отправки электронной почты в определенное время каждый день. Для этого вы можете написать какой-нибудь скрипт вне вашего PHP-приложения и использовать CRON для его планирования.

Вот сайт с несколькими методами, которые вы можете использовать для этого: http://www.thegeekstuff.com/2011/07/php-cron-job/

...