Thread Verfasser: Rolly8-HL
Thread ID: 963
Thread Info
Es gibt 5 Beiträge zu diesem Thema, und es wurde 3450 Mal angesehen.  Ausserdem wurden Dateien angehängt.
 Thema drucken
Zeitabbruch Leere Seite
Rolly8-HL
Hallo, bekomme nach Zeitabbruch eine Leere Seite, wodurch diese ausgelöst wird ist mir klar, kann mit F5 diese weiter ausführen lassen und auch die Aktion die dort hinter steht wird weiter ausgeführt aber dennoch bleibt sie Leer.
Sie bleibt laut Adresse dort wo sie ist, ist also keine leere index.php

Soetwas kann ich aber auch nicht verwenden, da ich nicht weiß was in der php.ini steht.

Zitat

(PHP 4, PHP 5, PHP 7)
set_time_limit — Beschränkt die maximale Ausführungszeit

Warnung
Diese Funktion hat keine Wirkung, wenn PHP im Safe Mode ausgeführt wird. Dies lässt sich nur umgehen, wenn man den Safe Mode deaktiviert oder das Zeitlimit bereits in der php.ini ändert.


Da jetzt keiner weiß was er machen soll und auch keine weiteren Info zu sehen sind würde ich dieses gerne ändern.

Gibt es eine Möglichkeit etwa anzeigen zu lassen als Info oder es sich jetzt von alleine refresh zu lassen?

Als vorab Info könnte man sagen wenn dieser Fall eintreten sollte was gemacht werden soll.


Es könnte aber auch sein das diese Aktion nie beendet werden kann da die DB zu Groß ist um sie in dieser Zeit zu beenden, dann wäre eine Umleitung auf eine Spezielle Infoseite hilfreich.
Eine feste Vorgabe kann ich aber leider nicht geben.

Hat da jemand eine Idee?
Gruß Rolly8-HL
Was für Andere Wichtig ist muss für mich nicht genauso Wichtig sein!
Bin Dickkopf Unbelehrbar mache aus Protest nicht das was andere für Richtig halten!
Das gibt einem zu Denken oder?
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Wemi
Kommt ein weinig darauf an, was dein Script genau macht.

Bei einem Newsletterscript zum Beispiel, sendet man ja auch nicht alle 100.000 Mails mit einem Aufruf raus. Da baut es so ähnlich wie eine Seitennavigation, die auch nur 10 Einträge auf einmal anzeigt. So etwas lässt sich dann gut per GET Anfragen lösen. Und natürlich einer header Weiterleitung, die am Ende ausgelöst wird.

Es gibt auch noch den Befehl sleep(), da wird kurz gewartet und das Script dann weiterausgeführt, dabei wird das Script Time Limit wieder zurückgesetzt. Musst dafür aber mal in der PHP Doku schauen, wie das dann genau gemacht wird.

Aber am besten ist, wenn das Script spätestens kurz vorm Ende der Scriptlaufzeit auch fertig ist.
"Es geht hier um die Frage, ob die Menschheit ohne Religion besser dastünde. Und ich sagte: ja" Ben Moore
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Rolly8-HL
Hallo, bin dabei mir eine R8HL_change_panel zu bauen die soll die Datenbank auf den nötigen Stand bringen.

   $result = dbquery("SELECT *  FROM ".DB_R8HL_CHANGE." LIMIT 200 ");

   while ($data = dbarray($result)) {
   dbquery("SET NAMES 'utf8'");
   dbquery("ALTER TABLE ".$data['change_table']."  ENGINE=MyISAM ");
   dbquery("ALTER TABLE ".$data['change_table']." CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci");
   
   dbquery("UPDATE ".$data['change_table']." SET ".$data['change_column']." = REPLACE(".$data['change_column']." ,'ß','ß')");
   dbquery("UPDATE ".$data['change_table']." SET ".$data['change_column']." = REPLACE(".$data['change_column']." ,'ä','ä')");
   dbquery("UPDATE ".$data['change_table']." SET ".$data['change_column']." = REPLACE(".$data['change_column']." ,'ü','ü')");
   dbquery("UPDATE ".$data['change_table']." SET ".$data['change_column']." = REPLACE(".$data['change_column']." ,'ö','ö')");
   dbquery("UPDATE ".$data['change_table']." SET ".$data['change_column']." = REPLACE(".$data['change_column']." ,'Ä','Ä')");
   dbquery("UPDATE ".$data['change_table']." SET ".$data['change_column']." = REPLACE(".$data['change_column']." ,'Ãœ','Ü')");
   dbquery("UPDATE ".$data['change_table']." SET ".$data['change_column']." = REPLACE(".$data['change_column']." ,'Ö','Ö')");
   dbquery("UPDATE ".$data['change_table']." SET ".$data['change_column']." = REPLACE(".$data['change_column']." ,'€','€')");
######## Auszug und jede menge mehr
   dbquery("SELECT * FROM ".DB_R8HL_CHANGE."  WHERE   change_column='".$data['change_column']."'");
   dbquery("DELETE FROM ".DB_R8HL_CHANGE." WHERE change_column='".$data['change_column']."'");
         }
         
   $change_action = dbcount("(change_id)",DB_R8HL_CHANGE);
   if ($change_action > 0) {
      echo "<meta http-equiv='refresh' content='2; url=R8HL_change_panel.php".$aidlink."&R8HL_change=action' />\n";
   } else {
   redirect("R8HL_change_panel.php".$aidlink."&R8HL_change=stop");
   }

Wenn jetzt aber eine oder mehr der DB so Groß ist das diese Anweisung über die Zeit hinausgeht muss abgebrochen werden um dann diese DB einzeln auszuwählen und bearbeiten zu lassen.

Sollte das auch nicht gehen muss eine andere Lösung gefunden werden, ich denke da mal an DB wie Chat oder auch Jahrelange gut besuchtes Forum.
Ich hoffe ja nicht das es dazu kommt.

Aber wenn sollte eine Info zu sehen sein "wie geht es weiter".

Habe mir das jetzt mit eingebaut, wird jetzt aber auch während der Ausführung angezeigt und kann benutzt werden aber wenn ein Zeitabbruch erreicht ist erscheint diese nur alleine und man hat jetzt nur noch die Möglichkeit zum Abbruch.

opentable("<center>Hinweis</center>");
 echo "<center><h3>Bitte warten: Auftrag wird bearbeitet!<br />
Sollte keine Aktivität zu erkennen sein abbrechen und Ifo beachten!</h3>
<a  href='R8HL_change_panel.php".$aidlink."&R8HL_change=cancel' target='_self' title='Abbrechen' class='button' >Abbrechen</a><br /><br />
</center>";
closetable();


Habe das schon getestet unter V7 PHP5.xx/7, V9 PHP5.xx/7 will damit erreichen das auch nachträglich installierte ältere Infusions auf den neuesten Stand zu bringen.
Bearbeitet von Rolly8-HL am 14. Juni 2016 13:15:31
Gruß Rolly8-HL
Was für Andere Wichtig ist muss für mich nicht genauso Wichtig sein!
Bin Dickkopf Unbelehrbar mache aus Protest nicht das was andere für Richtig halten!
Das gibt einem zu Denken oder?
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Wemi
Mach einfach einen Limit 1 anstelle von 200 und dann anstelle des Refresh eine header Weiterleitung.

Das sollte dann auch für große Tabellen gehen.
Die größte Tabelle, die ich mit dem Code hatte, war ca. 5GB groß. Getestet auf einem Freehoster. Also sollte das ganze für die meisten auf jedenfall reichen.
"Es geht hier um die Frage, ob die Menschheit ohne Religion besser dastünde. Und ich sagte: ja" Ben Moore
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Rolly8-HL

Zitat

Mach einfach einen Limit 1 anstelle von 200 und dann anstelle des Refresh eine header Weiterleitung.

Werde es mir mal anschauen, bin mir aber nicht sicher ob es auch geht da ich ein Schrittzähler habe der mir Anzeigt in welchem Schritt er sich gerade befindet, als Optische Ausgabe das eine Aktivität vorhanden ist.

Zitat

Schritt (3) in Bearbeitung
Bitte warten


Zusammengefügt am 14. Juni 2016 um 19:56:29:
Nachtrag:

Habe mir das noch einmal angesehen, ein Limit 1 halte ich nicht für Sinnvoll es so vor zugeben, damit wird der Browser nur unnötig belastet.

Ist jetzt auf Limit 100 voreingestellt und kann mit
setcookie zwischen 1-500 frei gewählt werden
(Werte außerhalb werden auf Min/Max gesetzt).

In der Info kommt die Erklärung welche Fehler auftreten können und wie dies zu beheben sind.

Ich denke mal es sollte so gehen, werde es aber noch von Test User prüfen lassen bevor ich es öffentlich stelle.

Zusammengefügt am 18. Juni 2016 um 14:33:59:
Nachtrag 2:

Habe schon wieder ein neues Problem, versuche es gerade auf meinem Server und bekomme nicht wie geplant eine leere Seite (mit meiner selbst geschriebenen Info) sondern jetzt das.

Zitat

504 Gateway Time-out

Jetzt weiß natürlich keiner was er weiter machen soll, mit F5 geht es zwar weiter aber wer weiß das schon wenn man sich die Info wo ich es unter Fehlerbehebung vermerkt habe nicht vorher anschaut.

Meine Frage kann man da was machen das dieses nicht vorkommt? oder nur auf dieser Seite ausgeblendet oder deaktiviert werden kann?

An der Servereinstellung soll und möchte ich nichts ändern oder ändern lassen.
Rolly8-HL hat folgende Datei angehängt:
Du hast nicht die Berechtigung die Anhäge dieses Themas zu sehen.

Bearbeitet von Rolly8-HL am 18. Juni 2016 12:37:46
Gruß Rolly8-HL
Was für Andere Wichtig ist muss für mich nicht genauso Wichtig sein!
Bin Dickkopf Unbelehrbar mache aus Protest nicht das was andere für Richtig halten!
Das gibt einem zu Denken oder?
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Springe ins Forum: