我在服务器上使用Ubuntu,我正在使用Putty访问.我想为我的php网站创建cronjobs.我怎样才能做到这一点?
如果你的意思是你希望你的php网站做一些常规任务,有两种可能的方法.
1)您使用cron定期拉出某个页面.您可以使用基于文本的浏览器执行此操作,例如lynx.你像这样拉你的脚本:
* * * * * /usr/bin/lynx http://yourhost.com/cron.php -dump > /dev/null
(这将每分钟调用一次.这样你就可以在你的应用程序中建立自己的计划)
2)使用命令行php interpreter调用脚本:
* * * * * /usr/bin/php /path/to/cron.php > /dev/null
通常解决方案二更好.但是,您需要访问该框.如果您无法在主机上安装crons,则可以从其他主机触发解决方案一中的cron.
还要注意使用php的命令行版本的常见陷阱.在debian(以及可能的其他系统)上,可能存在用于cgi,cli和mod_php的单独的php.ini文件.如果您已自定义配置,请确保命令行php使用正确的配置.您可以使用以下方法测试:
/usr/bin/php -i | less
为了回应dimo的评论,我做了一些基准测试.我用lynx,wget和php-cli调用了一个简单的本地php脚本(只是echos"test")1000次:
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%准确,但在我看来差异非常明显)