0

我正在使用 PHP 脚本来处理来自 Flash 应用程序的表单数据。这是代码:

<?php
if (isset($GLOBALS["HTTP_RAW_POST_DATA"]))
{
// create the target directory if it doesn't exist //   
   $dir = ($_GET['destination']) ? $_GET['destination'] : 'images';
   if (!file_exists($dir)) mkdir($dir, 0777, true);

// write the file to the target directory //        
   $fp = fopen($dir.'/'.$_GET['filename'], "wb" );
   fwrite( $fp, $GLOBALS[ 'HTTP_RAW_POST_DATA' ] );
   fclose( $fp );   
}   
else{
    echo('file data not received');
}
?>

正在写入的文件是图像,原始数据由 Flash 应用程序发送。共有三个版本的 Flash 应用程序都由同一块 PHP 处理。其中两个处理得很好;第三个将正确处理大约两次左右,然后我开始在日志中收到此错误:

[2013 年 5 月 17 日星期五 17:19:56] [错误] [客户端 172.251.78.205] ModSecurity:读取请求正文时出错:对等点重置连接 [主机名“客户端 URL”] [uri“/flash/php/saveImage.php” ] [unique_id "UZbJGmFKGIcAAB37ctwAAABO"]

从我收集到的信息来看,这意味着客户端连接在表单数据发送完成之前就超时了。另一件事是,如果我手动删除存储图像的目录并让脚本创建它每次都会工作。几个小时以来,我一直把头撞在桌子上。谁能提供一些关于发生了什么以及我如何解决这个问题的见解?如果需要更多信息,请告诉我,我会为您提供您可能需要的任何信息。提前致谢。

我试过使用 set_time_limit(0); 和忽略用户中止(真);但似乎都没有任何效果。

4

1 回答 1

0

所以我设法找到了问题和解决方案。我连续调用了 2 个 php 脚本,一个将图像保存到磁盘,一个将项目添加到购物车。发生的事情是购物车脚本在图像保存完成之前触发,并将停止其进程。我最后做的是在两个 PHP 调用之间添加一个定时的“感谢您与我们一起购物”。它只持续几秒钟,但足够长的图像保存脚本完成。从那以后就没有任何问题了。

于 2013-06-12T18:05:10.523 回答