在centos中运行php脚本以及时间和超时

在centos中运行php脚本以及时间和超时

我想在centos(/usr/bin/php file.php)中运行一个php脚本,它需要很长时间才能执行,并且在执行过程中,它停止运行,并且没有给我任何错误。而且我确信我的php代码中绝对没有错误(我以多种方式测试了它),我认为这是执行时间的问题。
我的问题是:

  • 我的服务器是否有可能出现超时错误,导致脚本无法执行?
  • 如果是,如何设置服务器在更长的时间内给出超时错误?

谢谢。

答案1

从命令行或 shell 脚本、cron 作业等执行的任何 PHP 脚本都没有超时。

当您从 CLI 调用 PHP 时,您甚至无法故意设置最大执行时间。你可以打电话set_time_limit(n),但这没有效果。

例如,如果 max_execution_time 影响 CLI,则以下脚本不应打印“done”,但它会打印:

<?php

set_time_limit(5);
print ini_get('max_execution_time') . "\n";
sleep(10);
print "done.\n";

您可能遇到了未报告的错误。确保启用完整的错误报告:

error_reporting(E_ALL);

答案2

如果您确定脚本中没有错误并且正在从命令行运行它,则您可以执行以下操作:

  1. 测试您关于超时的理论:编写一个虚拟脚本,该脚本在很长一段时间内不执行任何操作(如嵌套循环),它会在完成之前停止吗?
  2. 分析代码的内存要求:https://github.com/arnaud-lb/php-memory-profiler
  3. 尝试运行相同的脚本:虽然不太可能,但环境可能存在问题。

如果没有错误并且所需的资源可用,那么您没有理由不能运行脚本。

相关内容