我会马上说我不是 php 程序员,但需要在共享主机上执行一个可能很长的脚本 (php)。该任务与更新数据库中的[潜在]大量记录有关。为此,我计划创建一个 cron 作业。在这方面,以下问题:我是否正确理解使用 cron 之类的东西运行的脚本没有执行时间和内存限制(除了主机为我的关税设置的相对较大的内存和处理器时间物理限制)?也就是说,脚本不会运行,例如大约 5 分钟,然后它会在没有完成开始的情况下悄悄崩溃吗?是否可以保证脚本运行到最后并正确退出,即使它在后台缓慢沙沙作响?而且一般来说,
我会马上说我不是 php 程序员,但需要在共享主机上执行一个可能很长的脚本 (php)。该任务与更新数据库中的[潜在]大量记录有关。为此,我计划创建一个 cron 作业。在这方面,以下问题:我是否正确理解使用 cron 之类的东西运行的脚本没有执行时间和内存限制(除了主机为我的关税设置的相对较大的内存和处理器时间物理限制)?也就是说,脚本不会运行,例如大约 5 分钟,然后它会在没有完成开始的情况下悄悄崩溃吗?是否可以保证脚本运行到最后并正确退出,即使它在后台缓慢沙沙作响?而且一般来说,
在描述的用于启动php解释器的两个选项中- 从http服务器和命令行(==“从 cron 作业”),
php.ini通常使用不同的配置文件 ()。因此,解释器可以接收完全不同的配置参数。您可以使用php函数查看这些参数
phpinfo()(顺便说一句,所用参数的路径也将出现在输出的开头php.ini):从http服务器调用:在站点的文档根目录中创建一个具有任意名称和后缀
.php(例如, )的文件,info.php内容如下:并从http浏览器访问它-
http://ваш.сайт/info.php命令行调用:
甚至更短:
比较时,注意你感兴趣的配置参数:
max_execution_time和memory_limit。如果您对任何配置参数不满意,那么从命令行启动时,您可以使用以下选项覆盖它们
-d:或者,更彻底地,通过
php.ini使用必要的参数创建您自己的参数,并指定使用它:正确的
错误的
只有主神作保证。这是一个奇怪的问题,当然不可能有肯定的答案。
如果我们只是在谈论运行时的偏离,那么是的,这是有保证的。但是崩溃的其他原因,从脚本中的错误到重新启动服务器,都没有被取消。
或者,例如,脚本沙沙作响的时间太长,以至于下一次 cron 运行会启动第二个副本,这会破坏第一个副本的结果。
好吧,如果你需要保证服务的持续运行,那么你可以搞一个自制的守护进程,比如循环运行一个命令的shell脚本。但这取决于任务。顺便说一下,问题中没有一个字。