这确实取决于你的脚本是做什么它发回,但如果你可以使用AJAX,这将是该方式去。它不仅会让你长时间运行请求,而且不会阻塞浏览器,让用户自由地继续使用当前页面,直到请求完成。
实现类似此类功能的最佳方式是设置ignore_user_abort并关闭时间限制。这样你可以让脚本在后台运行。这样脚本可以在用户浏览您的网站时继续运行。他们甚至不必呆在同一页面上。所以你通过AJAX发起请求来启动它。在该脚本中有一个循环,用于更新用户会话的进度。
ini_set('session.use_cookies', 0); //don't spam the user with cookies for each session_start()
while(...) {
session_start();
//update status to the user's session
session_write_close();
//sleep or whatever
}
很明显,这不一定是一个循环。您可以在开始处理信息之前关闭会话,然后打开它,设置状态并再次关闭。一次只有一个脚本可以访问用户的会话,因此您需要确保此过程不会影响用户的会话。
然后,所有你需要做的就是让您网站上,让用户知道什么时候不管它是你正在做的是完成和/或为他们提供文件/输出/等的网页运行的脚本。
这样就减少了用户继续浏览您的网站的脚本运行时,不会强迫他们坐在一个页面在加载指示灯59。。
^同意。你会发现很多人在栈上更有帮助,当他们看到你确实接受,并给他们的声誉,当他们把自己的时间来帮助你与你的问题;) – Brian 2012-03-02 20:46:18
你需要的是分析,这样你就可以找出哪些部分是什么你页面需要很长时间才能完成然后你可以加速这些部分。 – Arjan 2012-03-02 20:50:56
这是事情 - 大约3/4的时间涉及到联系远程服务器。无论我的网站有多少流量,此服务器的速度都不会改变。您是否认为即使我通过URL直接运行脚本,浏览器仍然有机会以高流量超时运行? – Hope4You 2012-03-02 20:55:13