Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z użyciem funkcji set_time_limit na hostingach
Michael2318
post 15.06.2017, 10:10:23
Post #1





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
nospor
post 15.06.2017, 10:15:57
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




zamiast sleep() daj nieskonczona petle


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Michael2318
post 15.06.2017, 10:18:06
Post #3





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

Ostrzeżenie: (0%)
-----


  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.

Ten post edytował Michael2318 15.06.2017, 10:18:44
Go to the top of the page
+Quote Post
maly_swd
post 15.06.2017, 19:50:40
Post #4





Grupa: Zarejestrowani
Postów: 744
Pomógł: 118
Dołączył: 14.02.2009
Skąd: poziome

Ostrzeżenie: (0%)
-----


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);


--------------------
śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu..
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 06:31