Если вы хотите, чтобы ваш php-сайт выполнял какие-то обычные задачи, есть два возможных пути.
1) Вы используете cron для регулярного просмотра определенной страницы. Вы можете сделать это с помощью текстового браузера, например, рысь. Вы тянете свой сценарий так:
* * * * * /usr/bin/lynx http://yourhost.com/cron.php -dump > /dev/null
(Это будет вызываться каждую минуту. Таким образом, вы можете создать свой собственный график внутри приложения)
2) Вы вызываете ваш скрипт с помощью интерпретатора php командной строки:
* * * * * /usr/bin/php /path/to/cron.php > /dev/null
Как правило, решение два лучше. Однако вам понадобится доступ к коробке. Cron в первом решении может быть запущен с другого хоста, если вы не можете установить cron на хост.
Также остерегайтесь распространенных ошибок при использовании версии php для командной строки. В Debian (и, возможно, в других системах) могут быть отдельные файлы php.ini для cgi, cli и mod_php. Если вы настроили свою конфигурацию, убедитесь, что в командной строке php используется правильная. Вы можете проверить это с помощью:
/usr/bin/php -i | less
В ответ на комментарий Димо я сделал несколько тестов. Я вызывал простой локальный php-скрипт (который просто повторяет «test») 1000 раз с lynx, wget и php-cli:
kbsilver:temp kbeyer$ time . wget.sh
real 0m14.223s
user 0m2.906s
sys 0m6.335s
(Command: wget -O /dev/null "localhost/test.php"; 2> /dev/null)
kbsilver:temp kbeyer$ time . lynx.sh
real 0m26.511s
user 0m5.789s
sys 0m9.467s
(Command: lynx -dump "localhost/test.php"; > /dev/null)
kbsilver:temp kbeyer$ time . php_cli.sh
real 0m54.617s
user 0m28.704s
sys 0m18.403s
(Command: /opt/local/bin/php /www/htdocs/test.php > /dev/null)
Сервер lighttpd
, php(fastcgi)
с apc (в Mac OS X).
Оказывается, действительно, wget - лучший инструмент для работы в отношении скорости.
Таким образом, результат php-cli
не так уж удивителен, так как другие методы повторно используют уже запущенный поток php с кэшем кода операции.
Таким образом, единственное реальное преимущество использования php-cli - это безопасность, так как скрипт не будет доступен извне, так как вы можете поместить его вне docroot.
(Этот тест явно не на 100% точен, но, на мой взгляд, различия очевидны)