Как я могу использовать работу cron в движке Social? - PullRequest
0 голосов
/ 19 марта 2010

Я новичок в работе с cron в php, в основном я хочу отправлять электронную почту пользователю в определенное время. Я хочу отправлять электронную почту ежедневно, еженедельно, ежемесячно, ежеквартально, ежегодно или определенное количество дней.

В шаблоне smarty я хочу использовать функцию такого типа. Может ли кто-нибудь из органов знать, как это делать?

Ответы [ 2 ]

1 голос
/ 19 марта 2010

CRON основан на сервере. Вы не можете запускать задания CRON из PHP. Вы фактически запустили его на сервере. Если у вас есть общий хостинг или что-то еще, вы можете настроить задания CRON через административную панель управления или что-то подобное.

0 голосов
/ 15 ноября 2012

Возможно записать в пользовательский веб-сервер crontab из PHP, в зависимости от конфигурации безопасности.

$job = "* * * * * /bin/ls";
$p = popen("crontab -", "w");
$return = fwrite($p, $job, strlen($job));
pclose($p);

Это сотрет содержимое вашего существующего crontab. Вы можете прочитать существующую работу в первую очередь:

$p = popen("crontab -l", "r");
while ($crontab[] = fgets($p)) { /* ... */ }
pclose($p);

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

Обратите внимание, что ваш хост может не позволить вашему PHP делать это, и даже если это так, это может быть не очень хорошей идеей. Как говорит @Foo, лучший способ - просто поговорить напрямую с cron. Запустите сеанс оболочки и запустите crontab -e или посмотрите, что вы можете сделать с любым веб-интерфейсом, который вы можете получить.

...