Script-Abbruch? / SQL-Zugriffe?
MKay
- php
Hallo Community,
ich habe ein Problem :)
Ich füge in einer Schleife ungefähr 40000 Einträge in eine Datenbank-Tabelle ein, was auch wunderbar und schnell funktioniert.
Nun benötige ich aber noch eine Überprüfung, welche checkt, ob der aktuelle Datensatz schon in der Tabelle existiert und dann dementsprechend handelt.
Das habe ich schon auf verschiedene Art versucht:
1. mysql_query mit SELECT und danach mysql_num_rows
2. oder ...
3. oder mit SELECT count(xyz) und mysql_result
Davon war letzteres glaube ich das schnellste.
Mein Problem ist, dass das Skript anscheinend ncht zu Ende läuft.
Denn die letzte Zeile beinhaltet das Umbenennen einer mySQL-Tabelle; dort kommt er aber gar nicht erst an.
Nun stellt sich mir die Frage, ob das Script nach einer bestimmten Zeit automatisch abbricht, und wenn ja, wie man das verhindern kann.
Oder ob das an meiner Syntax zum Checken liegt, denn ohne diese funktioniert es ja.
mfg
MKay
Das wird mit der max_execution_time in der php.ini festgelegt, kannst ja zählen nach wie vielen Sekunden es abbricht und dann mit der Einstellung vergeleichen.
echo $begrüßung;
Das wird mit der max_execution_time in der php.ini festgelegt, kannst ja zählen nach wie vielen Sekunden es abbricht und dann mit der Einstellung vergeleichen.
Nein, kann er(/man) nicht, da die Zeit für Systemaufrufe nicht zu max_execution_time gezählt wird. Ein Script kann also durchaus länger laufen, wenn es diese Zeit außerhalb PHPs verbringt. Das kann man übrigens schon mit einem simplen sleep() testen.
echo "$verabschiedung $name";
echo $begrüßung;
- mysql_query mit SELECT und danach mysql_num_rows
- oder mit SELECT count(xyz) und mysql_result
Davon war letzteres glaube ich das schnellste.
Ja. mysql_query() fragt immer sämtliche beim SELECT entstehenden Daten ab und speichert sie zwischen. Erst nach diesem kompletten Abholen ist es in der Lage, die Anzahl der Ergebnisdatensätze für die Abfrage mit mysql_num_rows() zu kennen. SELECT COUNT(*) hat nur ein einziges Ergebnis und PHP hat entsprechend wenig abzuholen.
Mein Problem ist, dass das Skript anscheinend ncht zu Ende läuft.
Nun stellt sich mir die Frage, ob das Script nach einer bestimmten Zeit automatisch abbricht, und wenn ja, wie man das verhindern kann.
Einige Provider killen den Prozess, wenn er eine bestimmte Rechenzeit überschreitet. Ansonsten bietet PHP selbst diese Funktionalität über den Parameter max_execution_time an.
Oder ob das an meiner Syntax zum Checken liegt, denn ohne diese funktioniert es ja.
Die verbraucht vielleicht die Zeit, die ausreicht, um über das Limit zu kommen.
MySQL kennt übrigens auch solche Sachen wie INSERT IGNORE und REPLACE. Das Handbuch verrät dir Näheres dazu.
echo "$verabschiedung $name";