Php 当服务器进程仍在运行时,浏览器显示超时

Php 当服务器进程仍在运行时,浏览器显示超时,php,apache,internet-explorer,browser,timeout,Php,Apache,Internet Explorer,Browser,Timeout,我有以下问题: 我正在运行大内存进程,但已将内存负载划分为较小的块,因此没有CPU超时问题 在服务器中,我正在创建大约100kb大小的.xml文件,它们将被创建大约100+ 现在主要的问题是浏览器显示响应超时,而IE在下面(只是上面的状态栏)显示.php文件下载消息 在此期间,后端(服务器端)进程仍在运行,并以增量顺序不断创建.xml文件。所以这没问题 我有以下php.ini配置 max_execution_time = 10000 ; Maximum execution time of

我有以下问题:

  • 我正在运行大内存进程,但已将内存负载划分为较小的块,因此没有CPU超时问题
  • 在服务器中,我正在创建大约100kb大小的.xml文件,它们将被创建大约100+
  • 现在主要的问题是浏览器显示响应超时,而IE在下面(只是上面的状态栏)显示.php文件下载消息
  • 在此期间,后端(服务器端)进程仍在运行,并以增量顺序不断创建.xml文件。所以这没问题
  • 我有以下php.ini配置

    max_execution_time = 10000     ; Maximum execution time of each script, in seconds
    max_input_time = 10000 ; Maximum amount of time each script may spend parsing request data
    memory_limit = 2000M      ; Maximum amount of memory a script may consume (128MB)
    ; Maximum allowed size for uploaded files.
    upload_max_filesize = 2000M
    
    我在IE上运行我的网站,我使用的是带有PHP5.3的ZSCE

    有谁能在这个问题上给我指点正确的方向吗

    编辑:

    上传超时图像,这就是为什么要求下载.php文件


    编辑2:


    我简要说明了我的执行流程:

  • 我有一个带有类层次结构对象的PHP文件,它将从每个类层次结构开始执行Function1()
  • 我有班级档案
  • 首先,比方说,执行Function1(),它包含在块中创建XML文件的逻辑
  • 其次,假设执行Function2(),它将显示Function1()生成的输出
  • 所有这些都是以类层次结构的方式完成的。因此,在执行Function1()之前,我不能终止它的执行。然后调用Function2()

    编辑3:

    这是

    你问了一些交叉问题,我同意一些观点,但让我更详细地描述一下这个问题

  • 首先,我一次加载大约100+MB大小的XML文件,这就是为什么我在本地设置中的内存被挂起并停止机器上的一切,CPU时间正在利用它的大部分资源

  • 一、 然后,将这个大尺寸的XML文件分成小尺寸(这意味着现在我一次加载一个XML文件,然后在使用后卸载它)。这使我在本地设置中避免了内存过载和CPU问题

  • 现在我的后端进程运行时没有CPU或内存问题,但问题是浏览器超时。我甚至尝试了cURL,但根据我目前的结构,它似乎确实适合,因为我的类层次结构问题。我在层次结构中有一组类,它们都先执行流程函数,然后执行输出函数。所以,除非执行进程函数,否则输出函数不会出现在图片中,这就是浏览器显示超时的原因

  • 我甚至跟随,并没有取得什么成功,但不是我所寻找的。为什么我不能实现cURl,因为我的流程函数一次创建所需的XML文件,所以输出到浏览器需要花费太多时间。由于流程函数占用了那个么多时间,所以在完成之前,不可能将输出分配给客户机

  • 卷曲输出:

    test.txt文件的内容

    *即将()连接到mylocalhost端口80(#0)
    *正在尝试127.0.0.1…*有联系的
    *连接到mylocalhost(127.0.0.1)端口80(#0)
    \>获取myurl HTTP/1.1
    主持人:mylocalhost
    接受:*/*
    

    免责声明:根据选择的答案,根据第一个小成功选择此问题的答案。当出现此类问题时,@Hakre的解决方案也是可行的。但是现在没有答案解决了我的问题。Hakre的回答也更加详细,以防有人查找有关此类问题的更多详细信息。

    问题在于您的web服务器,而不是浏览器


    如果您使用的是Apache,则需要在httpd.conf或virtual hosts config上调整超时值。

    是否可以在脚本仍在处理时将一些输出发送到浏览器,即使是空白?如果这样做,则应重置超时计数器

    如果不可能,则必须增加注册表中IE的超时时间:

    HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings
    

    您需要ReceiveTimeout,如果它不存在,则将其创建为dword,并以毫秒为单位设置值。

    我在读取大型csv文件并将其放入数据库时多次遇到此问题。我用一种方法解决了这个问题,我把读取和放入数据库的过程分成了几个较小的部分。就像我创建了一个新表来记录读取和插入了多少数据,下一次页面重新加载并从该位置开始。所以,您可以通过一次尝试创建一个xml,然后重新加载页面并从下一个页面开始。这样,浏览器使用的内存就会被刷新。 希望能有所帮助。

    什么是“CPU超时问题”

    解决此问题的正确方法是异步运行繁重的内容(而不是Web服务器进程树)。

    您有3个页面

  • Process—创建XML文件,然后更新一个数据库值,表示该过程已完成

  • 根据进程完成数据库值的状态返回{true}或{false}的PHP页面

  • 一个ajax前端,每隔几秒钟轮询第2页以检查进程是否完成


  • 尝试包括
    设置时间限制(0)在PHP脚本页面中

    以下链接可能会对您有所帮助


    假设您进行了所有服务器端修改,从而避开了服务器超时[我几乎看到了上面解释的所有内容],为了避开浏览器超时,您必须这样做

    <?php
    set_time_limit(0);
    error_reporting(E_ALL);
    ob_implicit_flush(TRUE);
    ob_end_flush();
    
    
    一,。我正在运行大内存进程
    
    HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings
    
    <?php
    set_time_limit(0);
    error_reporting(E_ALL);
    ob_implicit_flush(TRUE);
    ob_end_flush();
    
    <?php
    echo 'dummy text or execution stats';
    ob_flush();