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. 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
I don‘ Ich verstehe, wo ich falsch liege.
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
Haben Sie vielleicht in Apache Fehlerprotokoll überprüft? – Rafael
Ich weiß es vielleicht dumm, aber haben Sie versucht, PHP-Code 'set_time_limit (120);' – Rafael