我有一个使用cURL从另一个服务器加载文件的PHP脚本。
该文件大约为24 is。我理解为什么加载文件的脚本本身需要一点时间才能执行,但是在运行脚本时,对站点的任何请求都会一直持续到脚本完成。
在我们使用相同脚本的旧共享服务器上没有发生这种情况。新服务器是云服务器。我使用了多达10个节点(6 6Ghz专用cpu、376 on内存、2500 on带宽),对此问题没有任何影响。
我不介意脚本本身需要很长时间来执行,因为它将是数据提要的自动化任务。不过,我不能让整个网站在运行的时候锁起来。
知道为什么会发生这种事吗?
更新--看起来这只发生在本地。如果我试图在脚本运行时将站点加载到另一台计算机上,它将按预期的方式工作。
发布于 2011-08-10 18:31:35
您可能可以“ignore_user_abort(真)”,然后在页面上使用HTTP重定向到另一个页面。
PHP 5也有不错的线程处理,这可能也有帮助。
发布于 2011-08-11 06:39:22
现在,关键问题是:除了获取该文件之外,您的脚本还能做什么?处理它并将数据插入数据库?也许在您的旧环境中,MySQL使用了InnoDB表,在新环境中,MySQL使用了MyISAM表。
在写操作期间,MyISAM需要完整的表锁,而不是InnoDB拥有的行级锁,因此,如果实际站点使用的表与curl脚本相同,那么这可能导致站点挂起。
https://serverfault.com/questions/299754
复制相似问题