Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] PCNTL_FORK i zapytania do bazy
Wotekk
post
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 4.12.2006

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


Hello


Mam problem ze swoim domowym skryptem do pobierania, jak dam bez pcntl'a to wykonuje zapytania do bazy (robi update wpisu),
Jak używam pcntl'a to pobiera plik (czyli dostaje zmienną z adresem pliku), ale nie wykonuje update do bazy i nie kill-uje się i zostawia procesy zoombie.

Użyłem pcntl z tego względu, że pobiera od razu 4 pliki naraz, a bez pcntl ściągał po kolei.


  1. while($r = mysql_fetch_assoc($wynik)) {
  2. $status=$r['status'];
  3. if($status=='1') {
  4. $id=$r['ID'];
  5. $url=$r['link'];
  6. $pid = pcntl_fork();
  7. if ($pid) {
  8.  
  9. $zapytanie = "UPDATE `download` SET `status` = '2' WHERE `ID`='$id'";
  10. $idzapytania = mysql_query($zapytanie);
  11.  
  12.  
  13. list($http ,$slash, $www, $files, $idrapid, $nazwa) = explode("/", $url);
  14.  
  15. // pobieranie curlem
  16.  
  17. $query = "UPDATE `download` SET `status` = '3' WHERE `ID`='$id'";
  18. $zapytania = mysql_query($query);
  19. posix_kill(getmypid(),9);
  20. }
  21. }
  22. }
  23.  


Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
mls
post
Post #2





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

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


Po pierwsze - w PHP każdy proces-dziecko musi mieć swoje połączenie do bazy danych, nie wiem czy to taki bug czy feature, ale z doświadczenia wiem, że jedynie połączenie utworzone po zforkowaniu procesu może działać poprawnie. Poza tym, warto byłoby dodać na początku kodu
Kod
declare(ticks = 1);
oraz ubijać proces-dziecko zwykłym die.


--------------------
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 Aktualny czas: 20.08.2025 - 05:02