作为cron工作和网站php的一部分,php脚本是否存在差异?


Is there a difference in php scripts as part of a cron job and website php?

我在一个网站上有一些进程,我现在发现我需要每天午夜运行。我正试图使用cron工作设置这个,但我对这是如何工作感到困惑。

问题是:php进程的运行方式与它在网站上的正常运行方式有区别吗?是否有需要满足的格式,或者代码可以/不能在一种情况下运行与另一种情况相比?这与我正在处理的特定代码无关。这是一个我还没有写的工作,但我似乎找不到这个问题的答案。

是的,在大多数典型的PHP设置中实际上存在差异。通常,对于通过Apache运行的PHP网站/web服务,您将使用一个完全独立的PHP安装,并完成它自己的PHP .ini配置。PHP通常会作为网站的用户运行(httpd, www-data等,取决于你的操作系统版本)

对于通过cron运行的脚本,您通常使用具有完全独立配置的PHP CLI。在自动填充的超全局变量(即$_SERVER)中可用的内容方面,CLI通常也会有很大的不同,并且通常没有会话的概念,也没有传播会话的能力。PHP CLI将以任何用户运行它(或在cron中指定)的方式运行。在目录和文件权限方面,与通过Apache运行相比,这可能会产生影响。

在某些PHP函数中,这两者之间也有不同的行为,所以显然你应该专门为在CLI中运行测试你的代码。

PHP手册中的这个链接解释了一些额外的差异:http://www.php.net/manual/en/features.commandline.differences.php