-1

我尝试发布很长(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 数据

4

1 回答 1

0

我很好奇,发现了这个:

发布在 php 内部邮件列表中

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

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

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

ps 我仍然认为在这里使用 parse_str 有点小技巧;)

于 2013-04-03T13:47:07.393 回答