2012-07-10 80 views
0

如果某个php页面正在运行一些长时间的进程,例如sleep或while循环,这会让它花费一段时间直到它加载,是否会影响来自同一页面的其他进程?,
我注意到当我尝试打开同一页面不同的短过程,它也需要很长的时间来加载,并明确它没有加载之前第一个(长过程)呢,PHP页面进程分离

是真的,或者是我的代码有什么问题以及如何预防它?
我认为它与缓存有关,但我不想在得到提示或答案之前搞砸

回答

1

我注意到,当我尝试用不同的短 过程中打开同一个网页,[...]它不是第一个(长期的过程)确实

最常见的前加载原因:

  • 您的脚本使用PHP会话“原样”,它使用文件锁定。文件锁定机制一次只能确保一个脚本可以编辑每个用户的会话数据,但这确实意味着提供来自同一用户的两个请求同时发生,第二个脚本在第一个脚本完成之前不会启动,如果它们都依赖(两个不同的用户有不同的会话文件,所以他们不会碰撞)
  • 浏览器自动检测页面花费很长时间,并在后台故意拖延后续请求 - 我相信这是谷歌浏览器默认做的事情。

两种情况都是相对安全但由于时滞仅存在情况下,同一个用户试图同时其加载多个网页是不常见 - 不同的用户将看不到延迟的实际页面需要,无论多长时间加载。

更多关于专题in this excellent SO answer

+0

是的,他们使用会话,是否可以通过编辑php.ini或其他任何东西来防止这种情况? – Osa 2012-07-10 02:44:40

+0

应用程序中的每个用户是否应该同时加载多个页面?因为通常这不是必需的。 – Mahn 2012-07-10 02:49:47

+0

嘿,真的非常感谢你关于会议的注意事项,我使用这个http://konrness.com/php5/how-to-prevent-blocking-php-requests/解决了这个问题,因为我不需要写任何东西,只是阅读,+++ 1 – Osa 2012-07-10 02:51:49

2

PHP在单个进程中运行,每次访问页面时,都会启动进程,过程,并完成。 每个进程不会影响其他进程。

+0

就像Apache ... – 2012-07-10 02:15:47