我现在发现我需要在每天午夜运行的网站上有许多进程。我正在尝试使用 cron 作业进行设置,但我对它的工作原理感到困惑。
问题是:运行 php 进程的方式与通常在网站上运行的方式是否有区别?与另一种情况相比,它是否需要满足一种格式,或者在一种情况下可以/不能运行的代码?这与我正在处理的特定代码无关。这是一份我还没有写的工作,但我似乎无法找到这个问题的答案。
是的,大多数典型的 PHP 设置实际上存在差异。通常,对于通过 Apache 为网站/Web 服务运行的 PHP,您将拥有一个完全独立的正在使用的 PHP 安装,并带有它自己的 php.ini 配置。PHP 通常会以网站用户身份运行(httpd、www-data 等,具体取决于您的操作系统版本)
对于通过 cron 运行的脚本,您通常使用具有完全独立配置的 PHP CLI。CLI 通常也会在自动填充的超全局变量(即 $_SERVER)中可用的内容方面存在显着差异,并且通常没有会话的概念,也没有传播会话的能力。PHP CLI 将作为运行它的任何用户运行(或在 cron 中指定)。与通过 Apache 运行的目录和文件权限相比,这可能会产生影响。
某些 PHP 函数在两者之间也有不同的行为,因此显然您应该专门测试您的代码以在 CLI 中运行。
PHP 手册中的这个链接解释了一些额外的差异: http ://www.php.net/manual/en/features.commandline.differences.php