2011-02-02 13 views
6

Czy istnieje sposób, aby praca pcntl działała w WAMP? Muszę opracować rozwidlające się rozwiązanie i przetestować je lokalnie.WAMP i pcntl_fork

+1

Można spróbować uruchomić/skompilować pod Cygwin, gdzie PCNTL jest bardziej prawdopodobne, aby funkcjonować. W przeciwnym razie możesz coś rzemiosła przez rozszerzenie w32api, jeśli odważysz się (i jeśli to nadal jest dostępne). – mario

Odpowiedz

10

Nie, to niemożliwe. Rozszerzenie PCNTL wymaga * platform nix.

Teraz, z tym co powiedziałeś, co próbujesz zrobić, i czy możesz rozwiązać to bez rozwidlenia ...?

Edit: Niektóre alternatywy uruchomieniem procesów w tle:

+1

Muszę mieć uruchomione procesy współbieżne. Mogę zaimplementować za pomocą crona (i używać DB do zarządzania liczbą uruchomionych procesów). Powiedzmy jednak, że chciałbym, aby 10 równoległych procesów działało, potrzebowałbym crona do wywołania konkretnego skryptu 10 razy - w 1-minutowych przyrostach - w celu uruchomienia wszystkich 10 skryptów (co oznacza, że ​​zajmie to całe 10 minut Dostaję pożądaną liczbę współbieżnych skryptów). Alternatywnie, mogę mieć funkcje "fikcyjne" wywoływać ten sam skrypt (np. Foo_1 wywołania foo, foo_2 wywołania foo, itp.) I wywoływać co minutę wywołanie cron foo_1, foo_2 itd. Wydaje się kludgy. – StackOverflowNewbie

+1

@Stack: Cóż, istnieje więcej niż jeden sposób uruchamiania zadań w tle. Możesz użyć 'nohup' i' & 'na Linuksie, aby rozłączyć procesy, lub obiektu COM WScript: http://msdn.microsoft.com/en-us/library/d5fk67ky(v=vs.85).aspx uruchom zadania w tle ... – ircmaxell

+0

@Stack: edytował odpowiedź – ircmaxell

-1

pseudo-kod:

while (TRUE) 
{ 
    $process_limit = get_process_limit(); 
    $process_count = get_process_count(); 

    if process count < process limit: 
    { 
     // get_row returns a row (as an array) from the DB that needs to be processed 
     $row = get_row(); 
     if($row === array()) 
     { 
     // Nothing to process; sleep 
     sleep(2); 
     } 
     else 
     { 
     // Process row 
     process_count(+1); 
     process_row($row); 
     process_count(-1); 
     } 

    } 
    elseif process count === process limit 
    { 
     // Do not add to the process 
     exit; 
    } 
    elseif process count > process limit 
    { 
     // Means the process limit was decreased 
     // Terminate this process instance 
     process_count(-1); 
     exit; 
    } 
} 
-1

To już odpowiedzi, ale myślałem, że chciałbym dodać moje 2p .

Możesz mieć pcntl-fork z php w oknach używając cygwin.

To bardzo trudny do zainstalowania, ale jeśli lubisz mnie, po prostu chcesz uruchomić skrypt php, to jest twój najlepszy wybór.

mam instrukcje od here: