我有一个无法解决的问题。我正在开发脚本,并且运行过程很长,总的来说,我是从外部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分钟后返回数据,这些数据将被馈送到数据库中。希望能澄清一下,对不起,对于我的困惑,我在其中一些方面还是一个初学者。
答案 0 :(得分:0)
如果您需要执行花费这么长时间的脚本,我会考虑不依赖调用脚本的后台进程。由于您尚未弄清申请意图,因此无法为您指明正确的方向。