Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP脚本运行到完成,但正在超时_Php_Codeigniter - Fatal编程技术网

PHP脚本运行到完成,但正在超时

PHP脚本运行到完成,但正在超时,php,codeigniter,Php,Codeigniter,我有一个PHP脚本,其中包含许多数据库查询,并复制了几个数据库表,因此,它需要相当长的时间才能完成。我遇到的问题是,它正在超时。然而,它似乎已经完成,这是令人困惑的 脚本在完成后将重定向到视图。然而,即使在将时间限制延长到5分钟后,它也会给我一个超时错误页面。但是,当我检查数据库时,所有表都已被完全复制,这表明脚本已完成 我是不是错过了一些简单的东西?相对于重定向到视图,是否存在超时的一般原因?我会发布一些代码,但是整个脚本大约有1000行代码,所以在这里显示它似乎有点广泛 另外,我正在使用Co

我有一个PHP脚本,其中包含许多数据库查询,并复制了几个数据库表,因此,它需要相当长的时间才能完成。我遇到的问题是,它正在超时。然而,它似乎已经完成,这是令人困惑的

脚本在完成后将重定向到视图。然而,即使在将时间限制延长到5分钟后,它也会给我一个超时错误页面。但是,当我检查数据库时,所有表都已被完全复制,这表明脚本已完成

我是不是错过了一些简单的东西?相对于重定向到视图,是否存在超时的一般原因?我会发布一些代码,但是整个脚本大约有1000行代码,所以在这里显示它似乎有点广泛

另外,我正在使用CodeIgniter


提前感谢您的帮助

PHP脚本可能没有超时,但您正在使用的浏览器已放弃等待任何结果。如果是这样的话,你需要以不同的方式处理整个事情。例如,在后台运行脚本,并通过AJAX或其他方式报告定期更新

这样想:

  • 浏览器向服务器请求网页并等待结果

  • 服务器运行PHP脚本,然后要求MySQL运行查询,并等待结果

  • MySQL运行查询并将结果返回给PHP

  • PHP会进行更多的处理,并将结果返回给浏览器

  • 在步骤3,PHP可能已超时,不再存在。MySQL不知道,当它工作时,它只是完成了它的工作,然后将结果返回给了nothing

    在步骤4,浏览器可能已超时并断开连接。PHP不知道这一点,所以它完成了自己的工作,然后返回一个结果


    本例中有两个单独的超时,但您的查询是以两种方式完成的。

    超时在脚本中的何处?计时器不是一个硬性的快速限制,它不会在脚本到达时立即终止脚本。如果php正忙于在外部库中执行某些操作(例如,等待mysql调用完成),它将不会检查计时器并中止db调用。当db调用返回并且控件返回php时,它将检查计时器。换句话说,您的浏览器决定您的时间到了,而不是php。我想可能是浏览器超时了。但是,为什么在浏览器超时后会立即复制这些表,而不考虑时间?例如,如果我将超时限制设置为30秒,它将在30秒后超时,但会复制表。如果我将超时限制设置为180秒,它会在3分钟后超时,但表会被复制。它们是需要30秒以上时间才能复制的大型表吗?你在使用什么数据库?也许DBMS已经收到了copy命令,即使PHP已经停止,它也会继续复制。我不认为它们是大表,但它们有很多。我正在使用mySQL。是的,它似乎工作得很好,除了用户出现超时错误。