我有一个我无法解决的问题。我正在开发一个脚本,我有一个长时间运行的过程,简而言之,我从外部urls中抓取一些数据,然后将这些数据添加到数据库中,这大约需要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分钟后返回数据,这些数据将被馈送到数据库。希望这能澄清一点,很抱歉造成混乱,我在这些事情上还是一个相当初级的人。
发布于 2018-08-16 09:04:22
如果您需要执行一个需要这么长时间的脚本,我会考虑一个不依赖于调用脚本的后台进程。由于您还没有阐明您的应用程序意图,因此不可能为您指明正确的方向。
https://stackoverflow.com/questions/51868204
复制相似问题