[PHP] max_execution_time umgehen?

11/01/2014 15:44 .Shalom#1
Hey,

bei meinem Hoster ist eine max_execution_time von 15 Sekunden gesetzt, welche ich auch nicht verändern kann (z.B. mit set_time_limit() / ini_set() / .htaccess).

Habt Ihr eine Idee wie ich die max_execution_time evtl. "umgehen" kann?
11/01/2014 16:08 NotEnoughForYou#2
Kommt drauf an für was genau du es umgehen willst.
11/01/2014 16:19 .Shalom#3
Quote:
Originally Posted by NotEnoughForYou View Post
Kommt drauf an für was genau du es umgehen willst.
Hab eine While-Schleife die mehr Zeit benötigt.
11/01/2014 16:29 NotEnoughForYou#4
Kannst du die rekursiv schreiben? Dann könntest du zb einfach dein script rekursiv aufrufen. Sponran wuerde mir sonst nichts einfallen wenn du nix am Server machen kannst und php nutzen willst. Höchstens den algo optimieren aber wenn da halt nix mehr geht wirds auch blöd
11/01/2014 17:03 .Shalom#5
Quote:
Originally Posted by NotEnoughForYou View Post
Kannst du die rekursiv schreiben? Dann könntest du zb einfach dein script rekursiv aufrufen. Sponran wuerde mir sonst nichts einfallen wenn du nix am Server machen kannst und php nutzen willst. Höchstens den algo optimieren aber wenn da halt nix mehr geht wirds auch blöd
Ich hatte folgende Idee:

PHP Code:
<?php
while(1){
      if(
time() > $time){
            
$ch curl_init($self_url);
            
curl_exec($ch);
            
curl_close($ch);
            break;
      }
      
//DO SOMETHING
}
?>
das Skript sollte sich nach einer gewissen Zeit (12 Sek.) von selbst neu aufrufen.. scheint aber nicht zu klappen.
11/01/2014 17:11 NotEnoughForYou#6
Was willst du denn genau machen? Vielleicht gibt es da ja eine andere Lösung ;)
11/01/2014 17:19 .Shalom#7
Quote:
Originally Posted by NotEnoughForYou View Post
Was willst du denn genau machen? Vielleicht gibt es da ja eine andere Lösung ;)
Eine Schleife die dauerhaft einen Status abfragt ;)
11/01/2014 17:22 MrDami123#8
Versuch es mit Ping-Pong.
Code:
Hauptfunktion:
    start Nebenfunktion()
    {do something}
    gets stop by max exe time

Nebenfunktion(delay):
    start Hauptfunkion nach delay
Keine Ahnung wie die max exe time funktioniert, könnte aber funktionieren, wenn du zwei Dateien verwendest und die max exe time nur den jeweiligen Prozess killt.
11/01/2014 17:30 NotEnoughForYou#9
Quote:
Originally Posted by MrDami123 View Post
Versuch es mit Ping-Pong.
Code:
Hauptfunktion:
    start Nebenfunktion()
    {do something}
    gets stop by max exe time

Nebenfunktion(delay):
    start Hauptfunkion nach delay
Keine Ahnung wie die max exe time funktioniert, könnte aber funktionieren, wenn du zwei Dateien verwendest und die max exe time nur den jeweiligen Prozess killt.
Er braucht einen Selbstaufruf, da die zweite Datei die den Prozess killt / wieder startet ja auch ne max Execution hat.

Wenn du nicht genau verraten willst was es machen soll kann man dir auch nicht richtig helfen. Wenn es beispielsweise sowas wie ein Statusupdate sein soll, reicht das auch alle x Minuten und man könnte das über einen Cronjob machen. Ansonsten eben rekursiv was aber auch enorm Ressourcen verbraucht und jenach Server auch problematisch werden kann wenn es tatsächlich dauerhaft laufen soll.

Wenn es tatsächlich dauerhaft laufen soll, also jede Sekunde eine Abfrage machen, dann ist PHP die falsche Sprache dafür, vorallem wenn es auf einem normalen Webspace laufen soll.
11/01/2014 18:47 MrDami123#10
Quote:
Originally Posted by NotEnoughForYou View Post
Er braucht einen Selbstaufruf, da die zweite Datei die den Prozess killt / wieder startet ja auch ne max Execution hat.
Wenn die zweite Datei nach der halben Laufzeit der ersten Aufgerufen wird und diese dann eine neue erste Datei startet, welche wieder eine neue zweite Datei startet, sollte es zumindest in der Theorie funktionieren.
Der GarbageCollector aka max exe time macht den Dreck dann weg.
11/01/2014 19:41 NotEnoughForYou#11
Quote:
Originally Posted by MrDami123 View Post
Wenn die zweite Datei nach der halben Laufzeit der ersten Aufgerufen wird und diese dann eine neue erste Datei startet, welche wieder eine neue zweite Datei startet, sollte es zumindest in der Theorie funktionieren.
Der GarbageCollector aka max exe time macht den Dreck dann weg.
Theoretisch ja, aber ich denke nicht, dass es für sein anliegen nötig ist tatsächlich jede Sekunde diese Datei ausführen zu lassen (oder besser gesagt, in Dauerschleife laufen zu lassen), aber ohne nähere Infos was er genau bezwecken will kann man leider keine alternativen nennen.
11/04/2014 14:07 Mete#12
Du kannst mal folgendes Versuchen, oftmals funktioniert das ;)

PHP Code:
<?php
/*
 * Code bla bla
 */

/*
 *  Hiermit wird versucht den Wert der php.ini zu überschreiben ;)
 */
ini_set('max_execution_time'300);

/*
 * Code bla bla
 */
?>
11/04/2014 20:06 NotEnoughForYou#13
Quote:
Originally Posted by Mete View Post
Du kannst mal folgendes Versuchen, oftmals funktioniert das ;)

PHP Code:
<?php
/*
 * Code bla bla
 */

/*
 *  Hiermit wird versucht den Wert der php.ini zu überschreiben ;)
 */
ini_set('max_execution_time'300);

/*
 * Code bla bla
 */
?>
Er hat doch geschrieben, dass das nicht funktioniert.
11/26/2014 14:53 mikaxxl#14
Sonst schreib dein Programm doch auf eine einmalige Abfrage um und starte das Skript in einem bestimmten Takt über das Crontab. So hast du das Problem mit der max_execution nicht. Wenn das Skript ewig laufen soll, dann wirst du mit einem hohen Limit auch nichts erreichen.
Also einmalige Abfrage und dann über einen cronjob ausführen lassen ;)