Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z użyciem funkcji set_time_limit na hostingach
Forum PHP.pl > Forum > PHP
Michael2318
Cześć.

Piszę z dość dziwnym problemem - potrzebuję zadeklarować, aby wszystkie moje skrypty na moim hostingu były przerywane, jeśli długość ich pracy przekroczy 57 sekund. Od razu więc zadeklarowałem na początku pliku ten myk:

  1. <?php
  2. sleep(80);
  3. ?>


Ku mojemu zdziwieniu - to nic nie dało. Poszedłem o krok dalej i dorzuciłem coś takiego:

  1. <?php
  2. ini_set('max_execution_time', 57)
  3. sleep(80);
  4. ?>


to również nic nie dało. Na koniec pokusiłem się o htaccess:

Kod
<IfModule mod_php5.c>
php_value max_execution_time 57
</IfModule>


również - nic. Napisałem do supportu hostingu linuxpl.com - zawsze odpowiadają na moje problemy w ciągu kilku sekund, na czacie. Kazali (jak zwykle) przesłać zgłoszenie na ich adres e-mail i kilka minut później dostałem odpowiedź, że mam zadeklarować ten parametr w directadminie (można tam zmieniać kilka podstawowych funkcji, które z reguły dostępne są w php.ini). Zmieniłem tam parametr max_execution_time ze 150 sekund na 57. Niestety - dalej nic to nie dało. Support przestał mi odpisywać, skończyło się tylko na tym, że "sprawdzają to". Poszedłem więc na inny hosting - hekko.pl. Sytuacja dokładnie taka sama - nie mogę nijak zmienić maksymalnego czasu wykonywania skryptu (też grzebałem w direct adminie, w kodzie PHP, w htaccess). Wszystkie te hostingi mają safe_mode wyłączone (wiem, że to jest wymóg dla funkcji set_time_limit, czytałem dokumentację).

Czy ktoś z Was spotkał się już z takim problemem? Co polecacie zrobić, żeby po 57 sekundach mielenia skryptu, ujrzeć ten fantastyczny błąd:

Cytat
Fatal error: Maximum execution time of 57 seconds exceeded


questionmark.gif

Dzięki.
nospor
zamiast sleep() daj nieskonczona petle
Michael2318
  1. <?php
  2. ini_set('max_execution_time', 57);
  3. $start = time();
  4. $stopping = FALSE;
  5. while( $stopping !== TRUE )
  6. {
  7. if ( (time()-$start) >= 70 )
  8. {
  9. break;
  10. }
  11. }
  12.  
  13. echo time()-$start;
  14. ?>


Efekt dokładnie taki sam, próbowałem już tego. Skrypt zwraca mi za każdym razem "70" co świadczy, ze wykonywał się 70 sekund.
maly_swd
Pewnie masz zablokowane te funkcje (tzn nie możesz zmieniać tych parametrów).

Dodatkowo taki fajny myk ma ta funkcja w normalnym hostingu:

When called, set_time_limit() restarts the timeout counter from zero. In other words, if the timeout is the default 30 seconds, and 25 seconds into script execution a call such as set_time_limit(20) is made, the script will run for a total of 45 seconds before timing out.

Może chodzi Ci o ini_set('max_execution_time', 57);
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.