怎样能够长时间运行php脚本

时间:2022-09-17 08:57:53

但无论在windows上用IE访问,还是在linux上用firefox访问,过不了几分钟就弹出页面
 
网络访问消息:: 不能显示此页

解释: 在页面检索完成之前,请求超时。

尝试下列:
刷新页:单击“刷新”按钮来再次搜索此页。这可能是一个一次性错误。
如果您仍然看不到请求的页面,请与您的管理员或支持人员联系。



技术信息(提供给支持人员)
错误代码 1460: 超时
背景信息: 网关不能从您要访问的网站、DNS 服务器或另一个网关服务器接收到及时响应。这可能表明网拥塞,或者该网站遇到技术困难。
日期: 2010-10-10 6:42:17
服务器: srv-isa.actions.com.cn
源: 防火墙


然后后台的php脚本就停止了
请问该怎么办才能让php脚本一直跑下去呢?不要寄希望于PHP能帮你完成。换其他语言吧。

每做完一个循环暂停一下,否则分配的资源会被占尽,就宕了
那么长时间有什么用啊

在什么上使用? 本地么#2的就可以 如果是空间 就不行 空间会把把超时的脚本杀掉

如果想让PHP一直运行下去也是可以的 不过要受到服务器的限制

提供一个方法给你 

用set_time_limit(0); 暂时不让脚本过期
执行到临界时间(服务器超时)前模拟http请求再次调用这个脚本 提供响应参数让起继续执行。

弱弱问一句,模拟http请求再次调用这个脚本?那岂不是要从头再跑,那上次已经运行过的怎么办?

出现你的这种情况的原因是 web 服务器超时了

1、你可以在命令行方式下运行你的代码
2、修改你的程序,在循环中要有输出,那怕是 echo ' ';

这个很好办啊,我上面有说,把此次运行的一下数据记录下来,在下次调用的时候通过GET或者POST方式传给这个脚本,然后执行之前对这些参数进行分析,以确定从哪里继续执行。

再加上 ignore_user_abort(); 这个函数,可以让脚本在关闭浏览器的时候依然执行下去(守护进程)。当然,服务器如果重启什么的,就没用了 :)

再补充一下唠叨老大的说法,如果一个长时间执行的脚本,在它运行的时间内一直没有输出的话,服务器可能就认定它超时给杀掉了。所以你需要在进本运行的时候echo点什么东西。 然后这里还有个兼容性的问题是,IE浏览器只有在获取到超过1024(好像是,具体忘了)个字符后才会输出东西,其他浏览器则不会,你可以做一个小的循环输出1-100试一下。
如果是这样的话,那么数据会非常不准确。
而且服务器是必须定期清理session表离线用户的,根据用户最后发送的请求lastactive与当前时间的差值来判断。

如果要达到精确的话,必须每隔1分钟或者30秒发送一次请求。


~~~~~~
看了很多帖子,感觉绕到的方法还是我自己原先设计的那个,因为服务器端PHP不能主动向客户端发送信息。只能客户端请求。。

所以为了证明这个用户在线,就必须不停的发送在线请求。
为什么?
因为有的用户不正常关机或者死机 ,那么网页里面的onunload 就不会触发。。。。。。。。

~~~~~~~
而现在的问题就是,如果同一时间发送在线请求的人数非常多,同时1万,另外限制每个用户最短只能1分钟发送一次,那么请求量也是会巨大的,甚至导致服务器宕机???(未经过测试)
来源:nba直播