Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] PCNTL_FORK i zapytania do bazy
Forum PHP.pl > Forum > Przedszkole
Wotekk
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.  


mls
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.
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.