![]() |
![]() ![]() |
![]() |
![]()
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 ? |
|
|
![]()
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 -------------------- |
|
|
![]()
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.
|
|
|
![]()
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 ![]() |
|
|
![]()
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. -------------------- |
|
|
![]()
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ę.
|
|
|
![]()
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ść ?
|
|
|
![]()
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: [
-------------------- |
|
|
![]()
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: 18.08.2025 - 20:14 |