Prawdziwy max_execution_time dla PHP na Linuksie
<code>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. </code>
Potwierdzają to testy:
Nie wygasa
<code><?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"; </code>
Upłynie czas
<code><?php set_time_limit(5); while (true) { // do nothing } echo "You got the page"; </code>
Naszym problemem jest to, że naprawdę chcielibyśmy, aby PHP przestało działać, bez względu na to, co robi, po upływie określonego czasu (ponieważ nie chcemy, aby zasoby były zajęte, jeśli wiemy, że nie udało nam się dostarczyć strony w akceptowalnej ilości czasu, jak 10 sekund). Wiemy, że możemy grać z ustawieniami takimi jakMySQL wait_timeout dla zapytań SQL, ale limit czasu strony będzie zależał od liczby wykonywanych zapytań.
Niektórzy próbowali wymyślićobejścia i nie wydaje się możliwe do wdrożenia.
P: Czy istnieje prosty sposób na uzyskanie prawdziwegoPHP max_execution_time
na Linuksie, czy lepiej skończyć się w innym miejscu, na przykładApache
poziom?