PHP-共享托管环境上的长时间运行进程

PHP-共享托管环境上的长时间运行进程,php,process,shared-hosting,Php,Process,Shared Hosting,我有一个我没能解决的问题。我正在开发一个脚本,我有一个长期运行的过程,简而言之,我正在从外部URL中删除一些数据,然后我将这些数据添加到数据库中,这大约需要30分钟左右 我使用了@ini\u集(“最大执行时间”,1800)以允许脚本运行足够长的时间 大概是这样的: function calculator_get_games() { @ini_set( "max_execution_time", 1800 ); $api = Api::getInstance(); $api:

我有一个我没能解决的问题。我正在开发一个脚本,我有一个长期运行的过程,简而言之,我正在从外部URL中删除一些数据,然后我将这些数据添加到数据库中,这大约需要30分钟左右

我使用了@ini\u集(“最大执行时间”,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\u time\u limit()函数重置计数器或延长脚本的执行时间,但这没有帮助,过了一段时间,我又遇到了同样的错误。我还读到一些共享主机的公司对PHP脚本的运行时间设置了限制,这与最大执行时间无关

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

因此,我们非常感谢您的帮助。我可以使用的任何想法或替代方法

谢谢

编辑:


正如杰米·杜德指出的,我还不够清楚。我已经在后台使用WordPress Cron来启动脚本并每天更新它。但当我试图从浏览器执行脚本时,它会同时停止。我正在开发一个插件,用户基本上可以在任何服务器上使用。在插件激活时,WP cron将开始抓取包含file\u get\u contents的数据,并在30分钟后返回数据,这些数据将被送入数据库。希望澄清一下,很抱歉,在一些事情上,我仍然是初学者。

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

您是否与主机提供商联系过?共享托管帐户有很多限制。这就是我们转向自我管理infra的原因之一。您是在CLI(命令行)还是在浏览器中运行它。Apache有自己独立于PHP的超时设置。CLI没有超时问题。@我使用的是wp cron实际上,我已经更新了这个问题,对不起,我不确定CLI和php在wordpress中如何工作。但是我试着从浏览器和cron执行这个函数,它同时停止了。cli对wordpress或Apache一无所知。Wp Cron不是Cron,它不是cli,它只是在有人访问站点时运行如果它已经超过了应该运行的时间,它会像页面请求一样在HTTP上运行,而不是在后台运行。Real cron在CLI上运行(这取决于您对文件的调用方式),但我建议改用它,除非您绝对需要wordpress函数。如果这是您的意思,我已经在后台使用了WP cron。我更新了问题,很抱歉不够清楚。我假设“get_all_games()”函数是超时的原因。您确实应该分页,因为您遇到的问题只会变得更糟。