Frage: Wie kann ich Skript stoppen und ihm sagen, den gesamten Prozess zu wiederholen, gehen Sie zurück zu Funktion a und run.Stoppen Sie die Ausführung und zurück zum Anfang
Antwort
Wenn Sie schreiben:
function a(){ $variable= 'random string'; }
Sie die Funktion a
definieren. Zu keinem Zeitpunkt Ihres Snippets wird eine Funktion aufgerufen. Um es zu nennen, würden Sie brauchen:
function a(){ $variable= 'random string'; }
a();
oder
a();
function a(){ $variable= 'random string'; }
(der Punkt, an dem die Funktion definiert ist irrelevant ist)
Im Allgemeinen ist die Art und Weise „gehen zurück zum Anfang "wäre goto
zu verwenden (dies erfordert PHP 5.3):
start:
//do stuff
goto start;
Wenn Sie nicht definieren Funktionen oder Bedingung der Definitionen, können Sie auch tun:
Sie sollten jedoch beachten, dass alle Änderungen des Staates (z. schreiben Sie an Globals) wird nicht zurückgespult, indem Sie irgendetwas davon tun. Sie sollten auch darauf achten, keine Endlosschleife zu verursachen.
PHP ist nicht Threading, so dass Sie den Prozess nicht erneut aus dem Prozess initiieren können, gibt es einen Hack, um dies zu tun, aber Sie müssen den Prozess schließen und senden Sie den outout, dann lassen Sie den Browser Ihren Prozess neu starten.
if(file_exists($variable))
{
header("Location: " . $_SERVER["PHP_SELF"]);
exit;
}
Sie können auch Loop-Check alle 1 Sekunden laufen, aber das hängt davon ab, ob die obige Logik für jeden Check-in erforderlich ist.
Dies würde jede Sekunde für 10 Sekunden überprüfen, sonst wird es beendet.
Was ist es mit Menschen und unten stimmberechtigten gültigen Beiträge heute, habe ich etwas verpasst? – RobertPitt
Nun, PHP-Code muss nicht in einem Browser ausgeführt werden. CLI ist eine weitere Möglichkeit, PHP-Code auszuführen. (Ich habe Sie nicht downvote) – Lekensteyn
Es war nicht meiner, aber die Verwendung von '$ _SERVER ['REQUEST_URI']' wäre genauer (würde sogar die Abfragezeichenfolge enthalten). – Artefacto
Gibt es einen Grund, warum Sie nicht einfach Funktion a und Funktion b aus einer Unterfunktion aufrufen können?
function doit()
{
a();
b();
if(file_exists($variable)){
//stop executing and start over again from function a;
doit(); //this is the important bit.
}
else
{
c();
d();
}
}
Was Sie beschrieben haben, ist eine klassische while
Schleife:
$keep_going = true;
while($keep_going) {
function a(){ $variable= 'random string'; }
function b(){ do something}
$keep_going = file_exists($variable);
}
function c(){ do something }
function d(){do something }
Beachten Sie, dass 'random string'
müßten unterschiedliche jede Iteration sein, sonst werden Sie in einer Endlosschleife stecken.
Sie werden auch in einer Endlosschleife hängen bleiben, wenn alle möglichen Kombinationen von 'random string'
aufgebraucht sind, aber es ist wahrscheinlich, dass Sie vor, dass lange ernst langsam Tiefen in Ihrer Anwendung erhalten werden, als wenn eine Menge der möglichen Kombinationen sind In Verwendung kann es eine große Anzahl von Iterationen dauern, bevor 'random string'
eine Kombination findet, die nicht verwendet wird.
Sie könnten einige dieser Probleme vermeiden, indem Sie eine sequenzielle Zählervariable anstelle einer zufälligen Zeichenfolge verwenden.
Eine andere Lösung:
while(1)
{
// ... code ...
a();
if (file_exists($variable))
{
continue;
}
// ... code ...
b();
}
Aber denken Sie daran irgendwo Pause die Schleife.
<?php
function a(){
$variable = "random string";
return $variable;
}
do{
$variable = a();
}while (file_exists($variable));
// do the rest of the process;
function b(){
// do something;
}
b();
?>
Vor allem $variable
hat keinen Raum auf file_exists($variable)
in Ihrem Code. Sie müssen den Wert zurückgeben oder global aufrufen.
dann führen Sie es durch eine do..while
Schleife.
Hoffe das löscht Ihr Problem!
- 1. Stoppen Sie die Ausführung der Methode getCurrentPosition
- 2. So stoppen Sie die Ausführung in ActionScript
- 3. Zurück zum Anfang der Zeichenfolge in RegEx
- 4. Stoppen Sie die Ausführung eines Versprechens Sequelize in Express.js
- 5. Customized Affixed "Zurück zum Anfang" Link
- 6. Zurück zum Anfang des Formulars in InfoPath
- 7. So stoppen oder brechen Sie die Ausführung des Dispatchblocks ab
- 8. So stoppen Sie die asynchrone Ausführung in node.js
- 9. auto scroll: stop springt zurück zum Anfang der Seite
- 10. Python beenden von allen Funktionen und stoppen die Ausführung
- 11. Stoppen Sie die Ausführung von PHP-Code und senden Sie das Signal an JavaScript
- 12. Ausführung von SQL-Skript stoppen
- 13. Ausführung von Ruby-Skript stoppen
- 14. Klicken Sie auf ein Popover scrollt zurück zum Anfang der Seite [Bootstrap und Django]
- 15. Toggle auf Div springen zurück zum Anfang der Seite
- 16. Python - Zurück zum Anfang Schleife mit While-Schleife
- 17. So verhindern Sie jQuery Zurück zum Anfang Schaltfläche, die ein doppeltes Tippen auf Mobil erfordert
- 18. Zurück zum Anfang der Zeile in der REPL
- 19. Muss ich einen Stream (C#) zurück zum Anfang zurücksetzen?
- 20. Python csv.reader: Wie kehre ich zum Anfang der Datei zurück?
- 21. ES6 Module, stoppen Ausführung von Code
- 22. Return StreamReader zum Anfang
- 23. Ersetzen Sie die Schaltfläche zurück, aber Swipe zum Zurück navigieren
- 24. Wie kann ich die Ausführung der js-Antwort stoppen?
- 25. Ist es möglich, die Ausführung in Javascript/Jquery zu stoppen?
- 26. Zurück-Taste, die zurück zum ausgefüllten Formular
- 27. Abkürzung, um die Ausführung des Programms in Netbeans zu stoppen
- 28. octave 3.8.1 kann die Ausführung im GUI-Befehlsfenster nicht stoppen
- 29. Wie die Ausführung der Abfrage nach Timeout zu stoppen
- 30. Double Click-Ereignis preventDefault() nicht die Ausführung stoppen?
Ich rieche einen PHP-Crash auf :) – RobertPitt
auch, werden Sie nicht in der Lage, Ihre Funktionen neu zu definieren. – RobertPitt
@Rob Guter Punkt, ich werde die Antwort korrigieren. – Artefacto