Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.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脚本也会挂起&;已设置IIS7连接超时_Php_Iis 7_Connection_Timeout - Fatal编程技术网

即使执行时间最长,PHP脚本也会挂起&;已设置IIS7连接超时

即使执行时间最长,PHP脚本也会挂起&;已设置IIS7连接超时,php,iis-7,connection,timeout,Php,Iis 7,Connection,Timeout,我的PHP脚本“挂起”时遇到了一个非常奇怪的问题,即使后台进程已经运行完毕。我正在运行PHP5.3、WindowsServer2008R2、IIS7,并安装了TomcatApache 项目背景我的脚本通过“shell_exec()”函数生成PDF表单。可以生成1-3000个表单。一旦生成了所有表单,下载链接和“重新开始”链接应该显示在页面底部——相反,站点继续“加载”,链接永远不会显示——即使我检查服务器并看到所有文件都已生成完毕 只有在生成300多个表单时才会出现此问题,这需要3-6分钟 我已

我的PHP脚本“挂起”时遇到了一个非常奇怪的问题,即使后台进程已经运行完毕。我正在运行PHP5.3、WindowsServer2008R2、IIS7,并安装了TomcatApache

项目背景我的脚本通过“shell_exec()”函数生成PDF表单。可以生成1-3000个表单。一旦生成了所有表单,下载链接和“重新开始”链接应该显示在页面底部——相反,站点继续“加载”,链接永远不会显示——即使我检查服务器并看到所有文件都已生成完毕

只有在生成300多个表单时才会出现此问题,这需要3-6分钟

我已经将php.ini的“max_execution_time”设置为1200(20分钟),IIS7的“连接超时”也设置为1200秒。以下是这些设置的图片链接,以确认我已正确设置它们: --php.ini --IIS7

有没有其他我缺少的设置?是否存在我不知道的Tomcat Apache连接超时设置?除了“最大执行时间”和“设置超时”之外,PHP还有其他“超时”设置吗?我已经用尽了我的资源,也不知道为什么我的脚本会继续挂起,即使在“while循环”已经运行完毕并且所有PDF都成功创建之后

感谢您的帮助/建议

While循环代码

/* build zip & directory for PDFs */
$zip = new ZipArchive;
$time = microtime(true);

    $new_dir = "c:/pdfgenerator/f-$time";
    if(!file_exists($new_dir)) {
      mkdir($new_dir);
    }


$res = $zip->open("pdf/tmppdf/mf-pdfs_" . $time . ".zip", ZipArchive::CREATE);


$num = 0;
while($row = mysql_fetch_array($result)) {

    /* associate a random # assigned to each PDF file name */
    $num++;
        include($form);
    $rand = rand(1,50000);
     $file_num = $num * $rand;

    $fo = fopen('c:\\pdfgenerator\\f-' . $time . '\\mf_pdf-' . $time . '-' . $file_num . '.html', 'w') or die("can't open file");

    fwrite($fo, $output);
    echo shell_exec('c:\wkhtmltopdf\wkhtmltoimage c:\\pdfgenerator\\f-' . $time . '\\mf_pdf-' . $time . '-' . $file_num . '.html c:\\pdfgenerator\\f-' . $time . '\\mf_pdf-' . $time . '-' . $file_num . '.jpeg');

    /* the follow uses ghost script to execute the ImageMagick convert command from cmd.exe */
    $magick_dir = 'C:\imagemagick'; // install IM in short DOS 8.3 compatible path
    $send_cmd=$magick_dir .'\convert c:\\pdfgenerator\\f-' . $time . '\\mf_pdf-' . $time . '-' . $file_num . '.jpeg -resize "1710x2200^!" c:\\pdfgenerator\\f-' . $time . '\\mf_pdf-' . $time . '-' . $file_num . '.jpeg' ;

    echo shell_exec($send_cmd);
    $send_cmd=$magick_dir .'\convert c:\\pdfgenerator\\f-' . $time . '\\mf_pdf-' . $time . '-' . $file_num . '.jpeg c:\\pdfgenerator\\f-' . $time . '\\mf_pdf-' . $time . '-' . $file_num . '.pdf';
    echo shell_exec($send_cmd);

    /* EO ghostscript code */

/* add the newly generated files to the Zip Archive */
    if ($res === TRUE) {
    //echo "RESULT TRUE...";
     $zip->addFile('c:/pdfgenerator/f-' . $time . '/mf_pdf-' . $time . '-' . $file_num . '.pdf','c:/pdfgenerator/f-' . $time . '/mf_pdf-' . $time . '-' . $file_num . '.pdf');

    //echo "FILE ADDED!";
    } 

}
echo "<h2><a href=\"http://50.63.85.232/med/pdf/tmppdf/mf-pdfs_$time.zip\">Download Zip</a></h2>";
echo "<h2><a href=\"index.php\">Start Over</a></h2>";
$zip->close("pdf/tmppdf/mf-pdfs_" . $time . ".zip", ZipArchive::close());
}

转换了我所有的mysql_uu>函数,这些函数现在从PHP5.5开始就被弃用,并使用了这些函数。

向我们展示确切的shell_exec()line@Dagon我已经在我的帖子底部包括了确切的shell行。它们也包含在我的while循环的中间。background@Dagon我是否添加“&”作为在后台运行流程的第三个参数?这是我第一次使用shell_exec(),因此我有很多关于Lear as daylight的完整功能需要学习!这是因为您使用的是mysql_uu函数!退房
echo shell_exec('c:\wkhtmltopdf\wkhtmltoimage c:\\pdfgenerator\\f-' . $time . '\\mf_pdf-' . $time . '-' . $file_num . '.html c:\\pdfgenerator\\f-' . $time . '\\mf_pdf-' . $time . '-' . $file_num . '.jpeg');

    /* the follow uses ghost script to execute the ImageMagick convert command from cmd.exe */
    $magick_dir = 'C:\imagemagick'; // install IM in short DOS 8.3 compatible path
    $send_cmd=$magick_dir .'\convert c:\\pdfgenerator\\f-' . $time . '\\mf_pdf-' . $time . '-' . $file_num . '.jpeg -resize "1710x2200^!" c:\\pdfgenerator\\f-' . $time . '\\mf_pdf-' . $time . '-' . $file_num . '.jpeg' ;

    echo shell_exec($send_cmd);
    $send_cmd=$magick_dir .'\convert c:\\pdfgenerator\\f-' . $time . '\\mf_pdf-' . $time . '-' . $file_num . '.jpeg c:\\pdfgenerator\\f-' . $time . '\\mf_pdf-' . $time . '-' . $file_num . '.pdf';
    echo shell_exec($send_cmd);