[php]Kilka procesów jednocześnie |
[php]Kilka procesów jednocześnie |
7.02.2011, 12:27:54
Post
#1
|
|
Grupa: Zarejestrowani Postów: 99 Pomógł: 2 Dołączył: 27.10.2006 Skąd: CyberRZECZYWISTOŚĆ Ostrzeżenie: (0%) |
Witam,
Da się jakoś w php uruchomić kilka procesów/funkcji/obiektów jednocześnie ? |
|
|
7.02.2011, 12:52:37
Post
#2
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 61 Dołączył: 20.08.2010 Ostrzeżenie: (0%) |
http://php.net/manual/en/book.pcntl.php
Dodatkowo kiedyś spotkałem się z takim dziwnym tworem jak: pierwszy.php
drugi.php
Nie pamiętam czy dokładnie tak to wyglądało, ale sposób działania przedstawiłem. Pokazuje to, że nawet w tak niekorzystnym środowisku jak PHP ludzie sobie radzą Ten post edytował Noidea 7.02.2011, 12:56:09 -------------------- |
|
|
7.02.2011, 12:56:56
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) |
Możesz uruchomić kolejne skrypty PHP wywołując odpowiednie komendy w systemie (tutaj małe ułatwienie: https://github.com/symfony/symfony/tree/mas...mponent/Process ) ale z wielowątkowością jako taką nie ma to nic wspólnego - PHP nie obsługuje jej.
|
|
|
7.02.2011, 12:59:28
Post
#4
|
|
Grupa: Zarejestrowani Postów: 99 Pomógł: 2 Dołączył: 27.10.2006 Skąd: CyberRZECZYWISTOŚĆ Ostrzeżenie: (0%) |
w pierwszym przykładzie przerwie działanie w curl_close lub curl_exec.
Drugi przykład to tylko ignorowanie gdy user kliknie na ignoruj + nieograniczony czas wykonywania. Nie rozwiązuje to problemu . |
|
|
7.02.2011, 13:06:40
Post
#5
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 61 Dołączył: 20.08.2010 Ostrzeżenie: (0%) |
@faran Nieeeeee! To nie miało być rozwiązanie twojego problemu, tylko ciekawostka, która mi się przypomniała. Tam nawet joina normalnego nie da się zrobić. Nie stosuj tego.
Jedno z możliwych rozwiązań podałem ci w linku na samej górze mojego postu. -------------------- |
|
|
7.02.2011, 14:11:01
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) |
Tak to bywa jeśli ktoś nie opisze za dokładnie problemu... PHP nie wspiera wielo procesowości - fakt, można to delikatnie obejść przy kilku kombinacjach ale podejrzewam, że akurat tutaj Ty szukasz czegoś opisanego na styl blogu gdzie napisano o "wielozadaniowości" i połączeniach asynchronicznych z innymi serwerami:
Guru - Multiplexing Dodatkowo kiedyś spotkałem się z takim dziwnym tworem jak... Niestety ale jeśli chodzi o Windowsa to jest to jedno z rozwiązań do wymuszenia nowego procesu - i jedyne jeśli jest zablokowana możliwość wykonywania poleceń konsolowych na serwerze np. ze względów bezpieczeństwa... dokładniej to potworek którego się uruchamia poprzez bezpośrednie jego wywołanie (curlem, file_get_contents czy czym tam chcecie - lub nawet przeglądarką internetową...) ma strukturę typu:
JAK WIDAĆ SKORO TO MIAŁO DZIAŁAĆ "W TLE" TO NIE MA MOŻLIWOŚCI POZNANIA WYNIKU DZIAŁANIA TAKIEGO SKRYPTU DROGĄ HTTP!!! - będziemy jedynie wiedzieli, że skrypt został poprawnie wykonany - wyniki musimy gdzieś zapisać... żeby ktoś się słów nie czepiał to w sumie jest możliwość poznania wyników drogą http jeśli potworek jest miniserwerem podpiętym na socketach... i jeszcze może linki: [wolontariat]wykonywanie 2 akcji po kliknięciu na button uruchamianie pliku php co 30s bez właczonego kompa - na serwie - chyba nie będziesz miał cierpliwości przeczytać całego dokładnie ^^ Przekazywanie obiektu COM, Przekazywanie obiektu COM między wywołaniami strony -------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
7.02.2011, 17:35:00
Post
#7
|
|
Grupa: Zarejestrowani Postów: 99 Pomógł: 2 Dołączył: 27.10.2006 Skąd: CyberRZECZYWISTOŚĆ Ostrzeżenie: (0%) |
Orientuje się ktoś czy w php 6 będzie taka możliwość ?
|
|
|
7.02.2011, 17:41:03
Post
#8
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk |
JAK WIDAĆ SKORO TO MIAŁO DZIAŁAĆ "W TLE" TO NIE MA MOŻLIWOŚCI POZNANIA WYNIKU DZIAŁANIA TAKIEGO SKRYPTU DROGĄ HTTP!!! curl_multi_init To jeden ze sposobów na odpalanie wielu procesów na RAZ gdzie przez HTTP... odbierzesz wynik http://pl.php.net/proc_open Skorzystanie z LIBEVENT http://pl.php.net/manual/pl/ref.libevent.php Opcji jest całe mnóstwo Proc_open odradzam ze względu na problemy z segmentation fault
Powód edycji: [
-------------------- |
|
|
7.02.2011, 21:33:22
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) |
JAK WIDAĆ SKORO TO MIAŁO DZIAŁAĆ "W TLE" TO NIE MA MOŻLIWOŚCI POZNANIA WYNIKU DZIAŁANIA TAKIEGO SKRYPTU DROGĄ HTTP!!! - będziemy curl_multi_init To jeden ze sposobów na odpalanie wielu procesów na RAZ gdzie przez HTTP... odbierzesz wynik wystarczyło przeczytać cały mój post a nie cytować mnie ni z gruchy ni z pietruchy - pierwszy link jest o połączeniach asynchronicznych które można wykonać na socketach - także otrzyma się wynik w tym samym procesie [inna bajka, że ten proces uruchomić może wiele innych procesów na innych bądź tym samym serwerze z których można pobrać odpowiedź] - rozwiązanie w zasadzie takie samo jak curl_multi - jednak ja jakoś częściej operuję na samych socketach bądź fsockopen a bardzo rzadko korzystam z curl'a - TO ROZWIĄZANIE TO BARDZIEJ WIELOZADANIOWOŚĆ NIŻ ROZDZIELENIE PROCESÓW... to co później opisywałem to sposób jak odpalić proces w tle nawet na windowsie gdy nie ma dostępu także do poleceń konsoli... -------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
Wersja Lo-Fi | Aktualny czas: 29.05.2024 - 12:32 |