2017-10-09 2 views
0

Ich habe eine PHP-Anwendung, geschrieben mit YII-Framework.Yii PHP-Anwendung bricht Verarbeitung CSV-Datei nach 30 Sekunden

Der Controller, der mir tatsächlich ein Problem gibt, erhalten Sie eine CSV-Datei, öffnen Sie es, um den Inhalt zu lesen, und fügen Sie einen Datenbankeintrag für jede CSV-Dateizeile hinzu.

public function actionGetCSVArticleData(){ 
    try { 
     $file = fopen("C:\\wamp\\www\\ps\\articoli.csv","r"); 
     $result =""; 
     $i=0; 
     while (($data = fgetcsv($file, 1000, ";")) !== FALSE) 
     { 
      $result[$i++]= $data; 
     } 

     for($j=1;$j<count($result);$j++){ 
      for($k=0;$k<count($result[$j]);$k++){ 
       $tempData = $result[$j]; 
       $articleMgmt = new ArticleMgmt(); 

       if(isset($tempData[0]) && isset($tempData[3])) { 
        $articleMgmt->code=trim($tempData[0]); 
        $articleMgmt->customer_code=trim($tempData[3]); 
       } else { 
        $articleMgmt->code=null; 
       } 

       if($articleMgmt->code!=null){ 
        $tCode = $this->isArticleExist($articleMgmt->code, $articleMgmt->customer_code); 

        if($tCode !=-1){ 
         $updateArticle = ArticleMgmt::model()->findByPk($tCode); 
         $this->updateArticle($updateArticle,$tempData); 
        }else{ 
         $this->updateArticle($articleMgmt,$tempData); 
        } 
       } 
      } 
     } 
     fclose($file); 

     $count = ArticleMgmt::model()->count(); 
     $articleData = ArticleMgmt::model()->findAll(); 
     $result = array('data' => $articleData, 'total' => $count); 

     echo CJSON::encode($result); 
    } catch(Exception $e){ 
     echo CJSON::encode(array("success" => false, 'message' => $e->getMessage())); 
    } 
} 

Das Problem ist, dass nach 30 Sekunden der Anruf an die Controller-Methode abgebrochen wird und es nicht die ganze Datei verarbeiten, sondern nur den ersten Teil. Man bedenke, dass ich über 40.000 Zeilen in der Datei haben und es bricht nach etwa 7800. chrome consolle error Das Merkwürdige ist, dass ich überprüft und modifiziert, um die php.ini ohne Ergebnis:

max_execution_time = 600 
max_input_time = 120 
memory_limit = 256 Mb 

enter image description here I don‘ Ich verstehe, wo ich falsch liege.

Antwort

0

Sind Sie sicher,
Sie richtige php.ini, Sie
und in phpinfo bearbeitet haben
max_execution_time=600
Sie Apache nach der Änderung neu gestartet haben?

+0

Ja; Ich habe Apache mehr als einmal nach jeder php.ini-Änderung neu gestartet und auch mit phpinfo() überprüft und sehe momentan die geänderten Werte. Sie können das Capture in meiner bearbeiteten Frage sehen – agodoo

+0

Haben Sie vielleicht in Apache Fehlerprotokoll überprüft? – Rafael

+0

Ich weiß es vielleicht dumm, aber haben Sie versucht, PHP-Code 'set_time_limit (120);' – Rafael

Verwandte Themen