我有一个PHP脚本,使用cURL从另一台服务器加载文件。
该文件是大约24MB。 我明白为什么脚本本身加载文件需要执行一些操作,但是在脚本运行的脚本执行之前,对站点的任何请求都将一直存在,直到脚本结束。
这在我们的旧的共享服务器上没有发生同样的脚本。 新的服务器是一个云服务器。 我把它占用了10个节点(6Ghz专用CPU,3760MB ram,2500GB带宽),对这个问题没有影响。
我不介意脚本本身需要很长时间才能执行,因为它将成为数据馈送的自动化任务。 我不能让整个网站在运行时locking。
任何想法,为什么这可能会发生?
更新它看起来像这只是本地发生。 如果我尝试在脚本运行时在单独的计算机上加载站点,则按预期工作。
您可能能够“ignore_user_abort(true)”,然后在页面上使用HTTPredirect到另一个页面。
PHP 5也有不错的线程,这可能也有帮助。
现在,关键问题是:你的脚本还有什么比读取那个文件? 处理它并将数据插入数据库? 也许在你以前的环境中,你有MySQL使用InnoDB表,并在你的新环境MySQL与MyISAM表。
MyISAM在写操作期间需要全表锁,而不是InnoDB所具有的行级锁,所以如果你的实际站点使用的是相同的表而不是curl脚本,那么可能会导致你的站点挂起。