php parse_str在大数据上崩溃

时间:2013-04-03 13:04:40

标签: php xml

我尝试发布非常长(10-15MB)xml的数据。因此,我在开发php.ini中增加了以下设置:

max_execution_time = 600
max_input_time = -1
memory_limit = 1024M
post_max_size = 5000M
upload_max_filesize = 5000M
default_socket_timeout = 600

但是php函数parse_str似乎仍然崩溃 - 因为所有后续命令都没有执行,页面响应是0字节。

我不是一个真正的php大师,有没有人能给我一个如何解决这个问题的提示?

编辑: 没有日志,没有响应和apache错误日志也没有抱怨什么

为什么我使用parse_str?这不是我的代码: - )

EDIT2: 我们使用CMS工具,我们有一些插件 - 通过查询字符串发送xml是一种限制的解决方法。通常,XML被解析并插入到自定义数据库(而不是CMS数据库)中。我刚刚插入了一些文件打印来检查发生了什么:

public function upsertItem($oXMLObjectFromExtern="")
{

    $bHasError = false;
    $iInserted = 0;
    $iUpdated = 0;
    $iErrors = 0;
    $output = "";

    $sPostData = file_get_contents("php://input");
    // works
    $fh = fopen('/var/log/apache2/kic.log', 'w');
    fwrite($fh, $sPostData);

    parse_str($sPostData, $aPostData);

    // does not do anything, no error messages nothing ... 
    $fh = fopen('/var/log/apache2/kic2.log', 'w');
    //fwrite($fh, "jetzt");
    fwrite($fh, var_export($aPostData,TRUE));

    if(!empty($aPostData['data']) OR is_object($oXMLObjectFromExtern)){

查询字符串格式如下:op = upsertitem& data =%3Crows%3E%0A%3Crow%3E%0A%3Cft_short_name%....更多编码的xml数据

1 个答案:

答案 0 :(得分:0)

我很好奇,发现了这个:

post on the php-internal mailing list

显然str_parse将max_input_vars ini设置作为限制器...所以这将是你必须调整的另一个设置。

我仍然不完全理解为什么skript无声地失败,但是......你是否尝试设置error_reporting级别以显示所有内容(如果ini设置不起作用,请在脚本中尝试error_reporting(E_ALL) )?

您是否监控服务器进程以查看执行是否达到内存限制或最大化CPU?

P.S。我仍然认为在这里使用parse_str有点像黑客;)