我尝试发布非常长(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数据
答案 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有点像黑客;)