Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Ograniczenie czasu i wykorzystania pamięci działającego skryptu, Skrypt do generowania pliku *.XML uruchamiany przez CRON
mpps
post
Post #1





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 14.03.2003
Skąd: Szczecin

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


Witam,
potrzebuję zawrzeć w skrypcie ograniczenia czasu działania (30s) i wykorzystania pamięci (32M).
Skrypt ma być uruchamiany przez CRON.

Skrypt ma tworzyć plik *.XML dla portalu kupujemy.pl, który niestety nie posiada rozwiązań takich jak Ceneo lub Nokaut.

Czy istnieje możliwość takiego ograniczenia dla całego kodu, czy jest potrzeba stosowania ograniczeń np. przy każdej pętli?

Nie mogę skorzystać z ini_set('memory_limit', '32M') i set_time_limit(1800)...

  1. <?php
  2.  
  3. // Nazwa pliku XML
  4. define('AAA_XML_FILE', 'aaa.xml');
  5.  
  6. //@set_time_limit(1800);
  7.  
  8. //ini_set('memory_limit', '32M');
  9.  
  10. $content = '';
  11.  
  12. $content .= <?xml version=\"1.0\" encoding=\"ISO-8859-2\"?>\n";
  13. $content .= "<aaa>\n";
  14. $content .= " <offers>\n";
  15.  
  16. $sql="
  17. SELECT [...]
  18. ";
  19. $productQuery = tep_db_query($sql);
  20.  
  21. if (tep_db_num_rows($productQuery)) {
  22. while($productInfo = tep_db_fetch_array($productQuery)){
  23. $content .= " <offer>\n";
  24. $content .= " <id>".$productInfo['products_id']."</id>\n";
  25. $content .= " </offer>\n";
  26. }
  27. }
  28. $content .= " </offers>\n";
  29. $content .= "</aaa>\n";
  30.  
  31. $filename = DIR_FS_CATALOG .AAA_XML_FILE;
  32. $fp = fopen($filename, 'w+');
  33. fwrite($fp, $content);
  34. fclose($fp);
  35. ?>


Może ktoś z Was już się z tym spotkał?

Z góry dzięki!

Ten post edytował mpps 4.01.2012, 11:17:57
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
modern-web
post
Post #2





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

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


No dobrze; da się to zrobić ale zauważ, że exit(); kończy skrypt, więc jeżeli czas ulegnie wydłużeniu nie wykona się pozostała część programu. Bardzo `polowy` sposób, którego zwyczajnie się nie zaleca.

A buforem byś tego nie załatwił?
Go to the top of the page
+Quote Post
mpps
post
Post #3





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 14.03.2003
Skąd: Szczecin

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


Cytat(modern-web @ 4.01.2012, 21:14:45 ) *
No dobrze; da się to zrobić ale zauważ, że exit(); kończy skrypt, więc jeżeli czas ulegnie wydłużeniu nie wykona się pozostała część programu. Bardzo `polowy` sposób, którego zwyczajnie się nie zaleca.


Właśnie o to chodzi, żeby skrypt przerwał swoje działanie i nie wykonała się pozostała część programu...! (IMG:style_emoticons/default/wink.gif)

A co do ograniczenia czasu to rozwiązałem to tak (i działa!) (IMG:style_emoticons/default/aarambo.gif)

memory_get_usage — Returns the amount of memory allocated to PHP
int memory_get_usage ([ bool $real_usage = false ] )
Returns the amount of memory, in bytes, that's currently being allocated to your PHP script.

a więc:

  1. $max_mem_usage = 32*1024*1024; //1024b * 1024Kb * 32Mb = 32Mb
  2. if(memory_get_usage() >= $max_mem_usage){
  3. exit("przekroczony limit pamieci");
  4. }


Cytat(modern-web @ 4.01.2012, 21:14:45 ) *
A buforem byś tego nie załatwił?

ob_start() jest na początku skryptu...

Jeszcze pozostaje obsługa pliku (otworzenie, zapis, zamknięcie)

Ten post edytował mpps 4.01.2012, 22:01:24
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 26.12.2025 - 04:05