我想做一个cron工作.我的应用程序是用PHP和Mysql开发的.
在浏览器中,如果我$_SERVER[HTTP_HOST]在编码中使用它,它工作正常.但是,如果我在cron作业中使用相同的东西,那就是错误.
任何机构都可以建议解决这个问题吗?
Tim*_*lla 17
$_SERVER['HTTP_HOST'] 从cronjob运行时未填充该文件,不通过HTTP访问该文件.
您将需要对主机进行硬编码或通过命令行参数传递它并通过$_SERVER['argv']阵列访问它.
当在命令行上执行php时,$_SERVER['HTTP_HOST'](当然)不可用.
您可以使用@符号来抑制错误,或者使用构造线稍微谨慎一些:
$host = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'CLI';
Run Code Online (Sandbox Code Playgroud)
尝试使用curl运行cron作业..它将填充$ _SERVER ['HTTP_HOST'].
linux上的语法就像
curl http://yourdomain/yourfile.php
Run Code Online (Sandbox Code Playgroud)
如前所述,当您通过php-cli运行php时,$ _SERVER不存在.
虽然,有一个选项可以在php-cgi中运行你的cron'd脚本,你将拥有$ _SERVER.如果您卷曲到本地Web服务器,则将填充$ _SERVER.
$ cat /etc/cron.daily/mydailyphpwork
/usr/bin/curl http://domain.tld/path/to/cron-script.php &> /dev/null
Run Code Online (Sandbox Code Playgroud)
但是,我认为你应该坚持使用TimWolla或DerVO提出的解决方案,除非你真的需要这种行为.
优点:
缺点:
| 归档时间: |
|
| 查看次数: |
12135 次 |
| 最近记录: |