首页 > 解决方案 > PHP - 共享主机环境中长时间运行的进程

问题描述

我有一个我无法解决的问题。我正在开发一个脚本,并且我有一个长时间运行的过程,简而言之,我正在从外部 url 中抓取一些数据,然后我将这些数据添加到数据库中,这大约需要 30 分钟左右。

我用过@ini_set("max_execution_time", 1800); 允许脚本运行足够长的时间。

像这样的东西:

function calculator_get_games() {
   @ini_set( "max_execution_time", 1800 );

   $api = Api::getInstance();

   $api::get_all_games();
}

这适用于我的本地主机。问题是,当然,共享主机环境不起作用。脚本在几分钟后停止,我收到503 错误。

奇怪的是,我认为它与 max_execution_time 无关,因为脚本在刹车前运行了几分钟,并且服务器上的 max_execution_time 设置为 60 秒。我在某处读到我可以使用set_time_limit()函数来重置计数器或延长脚本的执行时间,但这并没有帮助,一段时间后我得到了同样的错误。我还读到一些共享主机公司设置了 PHP 脚本可以运行多长时间的限制,与 max_execution_time 无关。

问题是脚本可以被各种用户使用,我无法控制服务器。所以我希望找到一种方法,如果可能的话,允许脚本甚至在上述共享主机上运行,​​这样用户就可以在几乎任何托管环境中使用脚本而不会出现问题。

因此,任何帮助表示赞赏。我可以使用的任何想法或替代方法。

谢谢。

编辑:

就像 Jamie_D 指出的那样,我不够清楚。我已经在后台使用 WordPress Cron 来启动脚本并每天更新它。但它在我尝试从浏览器执行脚本的同时刹车。我正在开发一个用户基本上可以在任何服务器上使用的插件。在插件激活时,WP cron 将使用file_get_contents开始抓取数据,并在 30 分钟后返回数据,这些数据将馈送到数据库。希望能澄清一点,很抱歉造成混乱,我在其中一些事情上还是一个初学者。

标签: phpprocessshared-hosting

解决方案


如果您需要执行需要这么长时间的脚本,我会考虑一个不依赖调用脚本的后台进程。由于您尚未阐明您的申请意图,因此无法为您指明正确的方向。


推荐阅读