2015-04-26 2 views
-1

У меня есть PHP-скрипт, в который вы можете добавить текст в некоторые поля. PHP-скрипт добавляет текст, который находится в полях в 2 файлах xml. Он работает хорошо, но если xml становится слишком большим (7000 строк - это мой xml), он больше не может писать.Php can not write to xml with 7000 Lines

Я изменил свой php.ini в эту

max_execution_time = 300  
max_input_time = 900  
;max_input_nesting_level = 64 ; Maximum input variable nesting level 
memory_limit = 512M 

Так эта проблема вызвана php.ini или в PHP файле. Сценарий будет работать только при удалении фрагмента кода xml.

здесь PHP

ini_set('default_charset', 'utf-8'); 
if(isset($_POST['post']) && $_POST['post']=='true') 

{$file1Content = '<?xml version="1.0"?> 
<channels>'; 
for($j=0; $j < $_POST['total1']; $j++) 
{if(isset($_POST['checkbox1'.$j]) && $_POST['checkbox1'.$j]=="on") 
{$file1Content .=" 
<channel> 
<title>".$_POST['checkbox1'.$j.'_title']."</title> 
<img>".$_POST['checkbox1'.$j.'_img']."</img> 
<info>".$_POST['checkbox1'.$j.'_info']."</info> 
<url>".$_POST['checkbox1'.$j.'_url']."</url> 
</channel>";}} 
$file1Content .= "</channels>"; 
$fileHandle = fopen($file1,"w"); 
fwrite ($fileHandle, $file1Content); 
fclose ($fileHandle); 


if (isset($_POST['post']) && $_POST['post']=="true" && $_POST['title']!='') 
$fileContent = file_get_contents($file1); 
$fileNewXml = " 
<title>".$_POST['title']."</title> 
<img>".$_POST['image']."</img> 
<info>".$_POST['info']."</info> 
<url>".$_POST['url']."</url>"; 
//Place elemnt in the right place 
$pos=$_POST['pos1']; 
$allTags=explode("<channel>",$fileContent,strlen($fileContent)); 
if(count($allTags)==1) //if file is empty 
{$fileNewContent='<?xml version="1.0"?> 
<channels> 
<channel>"'.$fileNewXml.'</channel></channels>';} 

    $fileHandle = fopen($file1,"w"); 

fwrite ($fileHandle, $fileNewContent); 

fclose ($fileHandle); 



<?php 

        $content= file_get_contents($file1); 

        $arr = simplexml_load_string($content); 

        $i=1; 

        foreach ($arr as $element) 

        { 

         echo "<option value='$i'>$element->title</option>"; 

         $i++; 

        }  

       ?> 
+0

Можете ли вы показать нам файл PHP, а? – Ebbez

+0

Я добавил php сейчас –

ответ

0

, чтобы исправить это просто пойти в php.ini и добавить

max_input_vars = 3000 
+0

Если ответ представляет собой повышение ['max_input_vars'] (https://php.net/manual/en/info.configuration.php#ini.max-input-vars), то сообщение об ошибке вы могли бы спросить о том, что это было * "[PHP Warning: Unknown: входные переменные превысили 1000] (http://stackoverflow.com/q/9673895/367456)" *. И поскольку вы выбрали 3000 в качестве значения, вы можете относиться к существующим Q & A, а именно [настройка max_input_vars директивы PHP.ini с использованием ini_set] (http://stackoverflow.com/q/9973555/367456), но мне немного интересно о количестве : Почему 3000? – hakre