【发布时间】:2011-02-25 16:41:39
【问题描述】:
我有一个有 2 个页面的网站,(home_page.php 和 action_page.php)Action 页面需要 aprx。 2 分钟完全加载(服务器端需要 2 分钟)。但是如果用户在加载动作页面时点击主页链接,浏览器不会转到主页,直到动作页面完全加载。如果主页在新标签页中打开,也是如此。
首先这是什么原因? (bowser ? php ? apache ?) 我怎样才能避免这种情况?
谢谢
【问题讨论】:
我有一个有 2 个页面的网站,(home_page.php 和 action_page.php)Action 页面需要 aprx。 2 分钟完全加载(服务器端需要 2 分钟)。但是如果用户在加载动作页面时点击主页链接,浏览器不会转到主页,直到动作页面完全加载。如果主页在新标签页中打开,也是如此。
首先这是什么原因? (bowser ? php ? apache ?) 我怎样才能避免这种情况?
谢谢
【问题讨论】:
很可能是因为会话被锁定。 PHP 将只允许每个会话一个请求,以防止出现问题(覆盖数据等)。见:session_write_close()...
【讨论】:
如果页面加载需要 2 分钟,则您已达到典型浏览器的网络超时限制。页面加载时间真的很长。您可能需要考虑生成一个单独的进程来处理长处理。您可以将结果放入数据库、文件等中,并使用轮询来检查是否完成。
当产生一个进程(exec())时,确保你使用nohup,后台它(&)并将错误输出直接到/dev/null,否则它不会与web进程断开连接,web进程会等待它完成。
【讨论】:
另外,如果您正在开发,请查看您的调试设置。我的 .htaccess 中有这个:
php_flag xdebug.remote_enable on
php_flag xdebug.remote_connect_back on
php_flag xdebug.remote_autostart on
这会产生相同的行为。
【讨论】: