ERLEDIGT
NEIN
NEIN
ANTWORTEN
16
16
ZUGRIFFE
518
518
EMPFEHLEN
-
04.01.12 11:43 #1
Moin,
Ich weiß grad nicht weiter....
Wenn ich mein Script starte wird nach etwa 3-4 Minuten die Datei zum Download angeboten, also steigt mein Apache da aus.
In der php.ini ist "max_execution_time" auf 18000 (6 min) eingestellt.
Was für einstellmöglichkeiten gibt es denn noch, denn wie ich auf der Datenbank sehe werden die Querys weiterhin ausgeführt, obwohl das PHP-Script nicht mehr läuft...Die Schweine von heute sind unsere Schnitzel von morgen!
-
18000 sind doch 5 Stunden?
Und Apache hat auch ein Timeout, Standard 5min.
Nur Downloaden lassen sollte er nichts...
Mime-Einstellungen?Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
04.01.12 12:04 #3
Stimmt, weiß nicht wo ich grad meinen Kopf hatte

Wo finde ich diese Einstellung? Welche Auswirkungen können Veränderungen haben?
Inwiefern meinst du das? Es ist nur eine PHP-Datei welche einige Querys verarbeitet (~ 200.000)
Es poppt nach einer bestimmten Zeit ein Dialog auf wo ich gefragt werde ob ich die Datei speichern möchte oder nicht....Die Schweine von heute sind unsere Schnitzel von morgen!
-
04.01.12 12:25 #4
? Es ist wirklich das php-Script, das man dann herunterladen kann ? Böse..
Essentiell würde ich den Programmieransatz überdenken. Was hälst Du davon, das Script sich selbst rekursiv aufrufen zu lassen? Damit umgehst Du
(A) die lange Abarbeitungszeit eines Scripts
(B) fehlende Meldungen zum Scriptstand
(C) TimeOut-Probleme
(D) Abstürze?
Gib dem Script einfach per POST einen begrenzten Datenbereich (zB id 1-100) mit und laß nach Abarbeitung den nächsten Haufen mit einem Selbstaufruf bearbeiten ( zB id 101-200). Zusätzlich kannst Du noch per POST alle Infos mitschicken, die wichtig sein könnten.
mfg chmeeMein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
Benutzt den DANKE-Knopf oder bewertet den Beitrag
"GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
-> Regexp <- -> php <- -> Javascript <-
-
04.01.12 12:35 #5Die Schweine von heute sind unsere Schnitzel von morgen!
-
04.01.12 13:30 #6
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.521
Hm, könnte man hier nicht evtl. Zend_Queue verwenden? http://framework.zend.com/manual/de/...framework.html
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
04.01.12 14:00 #7
Naja, im Grunde hole ich nur Datensätze mit einem Mapper, geh sie in der Schleife durch und setze sie neu. Das sind halt über 200.000 Datensätze....
Es wird genau nach 2 Minuten abgebrochen, die SQL-Querys laufen aber weiterhin.PHP-Code:public function updatepositionAction(){
$ModelPosition = new Model_Position();
$MapperPosition = new Model_Mapper_Position();
$entrysPosition = $MapperPosition->fetchAll();
$output = array();
$counter = 0;
foreach ($entrysPosition as $row){
$output[$counter]['old']['ttime'] = $row->getTtime();
$output[$counter]['old']['acceptdate'] = $row->getAcceptdate();
$output[$counter]['old']['id_account'] = $row->getId_account();
$ttime = new Zend_Date($row->getTtime());
if($row->getAcceptdate() != 0){
$acceptdate = new Zend_Date($row->getAcceptdate());
$newAcceptDate = $acceptdate->add(5, Zend_Date::YEAR)->toValue(Zend_Date::TIMESTAMP);
}else{
$newAcceptDate = 0;
}
$newTime = $ttime->add(5, Zend_Date::YEAR)->getTimestamp();
$output[$counter]['new']['ttime'] = $newTime;
$output[$counter]['new']['acceptdate'] = $newAcceptDate;
$output[$counter]['new']['id_account'] = $row->getId_account();
$newTimes = array(
'ttime' => $newTime,
'acceptdate' => $newAcceptDate
);
$MapperPosition->find($row->getId(), $ModelPosition);
$ModelPosition->setOptions($newTimes);
$MapperPosition->save($ModelPosition);
$counter++;
}
$this->view->output = $output;
}
Die Schweine von heute sind unsere Schnitzel von morgen!
-
04.01.12 14:11 #8
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.521
Warum lässt du das nicht die Datenbank erledigen?
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
04.01.12 14:15 #9Die Schweine von heute sind unsere Schnitzel von morgen!
-
04.01.12 14:31 #10
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.521
Du machst das ewas umständlich, wenn ich den Code richtig deute. Zuerst holst du alle Datensätze raus, dann loopst du drüber und holst dann noch mal den jeweiligen Datensatz, um ihn abzudaten. Hast du mal Vergleiche gemacht, wie das mit Plain-SQL läuft? Ich könnte mir vorstellen, das du dir wenigstens den einen Abholprozess sparen kannst, in dem du ein update() mit WHERE-Condition einbaust.
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
04.01.12 14:47 #11
Also Plain SQL sieht es so aus:
Code sql:1 2 3 4 5
UPDATE tablename SET field1 = IF(field1 IS NULL OR field1 = 0, field1, unix_timestamp(date_add(from_unixtime(field1), INTERVAL 5 YEAR))), field2 = IF(field2 IS NULL OR field2 = 0, field2, unix_timestamp(date_add(from_unixtime(field2), INTERVAL 5 YEAR)))
und dauerte 34 Sek.
222.714 rows affectedDie Schweine von heute sind unsere Schnitzel von morgen!
-
04.01.12 15:41 #12
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.521
Also ist das Updaten nicht das Problem. Hast du mal versucht, mit nem Profiler rauszufinden, wo es hakt? Da muss man ja nicht unbedingt alle Datensätze updaten, es genügen so 100 um herauszufinden, wo der Schuh drückt. Kennst du mein Tutorial zu diesem Thema?
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
04.01.12 16:00 #13nope, noch nichtKennst du mein Tutorial zu diesem Thema?

Ich hab mir auch schon überlegt das mit AJAX zu machen, für jede Row eine Ausgabe per AJAX holen. Dann müsste es doch auch funktionieren...Geändert von Maniac (04.01.12 um 16:04 Uhr)
Die Schweine von heute sind unsere Schnitzel von morgen!
-
04.01.12 16:16 #14
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.521
Das findest du hier: http://www.tutorials.de/content/206-...ug-finden.html
Die Sache mit Ajax: Das kommt ja in etwa dem hin, was chmee schon vorgeschlagen hat.
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
04.01.12 23:25 #15
Nur würd ich das (bei 200.000 Einträgen) sicherlich nicht Eintrag für Eintrag machen. Sondern in Paketen - zu zB 1.000Stück - abholen, bearbeiten und dann im Paket wieder abschicken. Der größte Zeitfresser wäre in dem Fall ja der ganze Web-Krams. (Obwohl ich den Ajax-Ansatz echt nicht verstehe.. Dann kann man es auch rein in php machen - performanter)
Und: Deine foreach-Schleife ist genau der Ansatz für ein rekursives externes php-Script, bei dem die Laufzeit die "Anzahl pro Durchgang" limitiert. Dann sind es eben bei 2 Minuten zB 2.500 Einträge und schwupps, ruft sich dieses Script wieder auf, bis es bei count() angekommen ist und bricht dann ab. Ausgaben kannst Du per POST mitschleifen und zB am Ende in eine Textdatei schreiben, die Du dann anzeigst.
mfg chmeeGeändert von chmee (04.01.12 um 23:50 Uhr)
Mein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
Benutzt den DANKE-Knopf oder bewertet den Beitrag
"GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
-> Regexp <- -> php <- -> Javascript <-
Ähnliche Themen
-
PHP-Files werden zum Download angeboten
Von Peter Klein im Forum Hosting & WebserverAntworten: 6Letzter Beitrag: 15.02.10, 09:04 -
PHP-Script-Aufruf aus HTML wird plötzlich zum Download angeboten
Von pssw im Forum PHPAntworten: 26Letzter Beitrag: 26.09.08, 20:27 -
XP-DFÜ-Probleme(beendet nach kurzer Zeit die Verbindung)
Von therealcharlie im Forum Office-AnwendungenAntworten: 1Letzter Beitrag: 13.04.05, 04:15 -
MSQL beendet sich immer selbst nach kurzer Zeit
Von GuenterS im Forum Relationale DatenbanksystemeAntworten: 6Letzter Beitrag: 27.04.03, 17:13 -
divx: wiedergabe bricht nach kurzer zeit ab !
Von nils11 im Forum Microsoft WindowsAntworten: 4Letzter Beitrag: 15.04.02, 15:14





Zitieren



Login






[PHP][Snippet] Array zu XML konvertieren