According to the documentation:Echt max_execution_time für PHP auf Linux
max_execution_time only affect the execution time of the script itself.
Any time spent on activity that happens outside the execution of the script
such as system calls using system(), stream operations, database queries, etc.
is not included when determining the maximum time that the script has been running.
This is not true on Windows where the measured time is real.
Dies wird durch Tests bestätigt:
Wird Wird nicht
<?php
set_time_limit(5);
$sql = mysqli_connect('localhost','root','root','mysql');
$query = "SELECT SLEEP(10) FROM mysql.user;";
$sql->query($query) or die($query.'<br />'.$sql->error);
echo "You got the page";
Timeout Timeout
<?php
set_time_limit(5);
while (true) {
// do nothing
}
echo "You got the page";
Unser Problem ist, dass wir wirklich möchten, dass PHP nach einer bestimmten Zeit aussetzt, unabhängig davon, was es tut (wir wollen die Ressourcen nicht belasten, wenn wir wissen, dass wir keine Seite geliefert haben) in einer akzeptablen Zeit, wie 10 Sekunden). Wir wissen, dass wir mit Einstellungen wie dem MySQL wait_timeout für die SQL-Abfragen spielen können, aber das Seitentimeout hängt von der Anzahl der Abfragen ab, die ausgeführt werden.
Einige Leute haben versucht, mit workarounds zu kommen, und es scheint nicht implementierbar.
F: Gibt es eine einfache Möglichkeit, eine echte PHP max_execution_time
auf Linux zu bekommen, oder sind wir besser Timing an anderer Stelle aus, wie Apache
Ebene?
Dies wird nicht Auswirkungen auf PHP-Verarbeitung – kuba
in der Tat habe ich mit Apache 'TimeOut' auf' 2' (Sekunden) eingestellt und es hat einfach keinen Effekt überhaupt. Gibt es etwas anderes als 'mod_reqtimeout', das du John empfehlen kannst? – Max