Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]tworzenie watkow
-gox-
post
Post #1





Goście







Na poczatku zaznaczam ze odpalam skrypt z CLI

Czy jest jakas mozliwosc ominiecia czekania skryptu na zakonczenie procesu uruchamianego z shell_exec() / exec() itp ? narazie jedynym sposobem na to wydaje sie uruchamianie skryptu(ow) na hosingu.. wtedy moge wywolac URL ze skryptem, a fsockopen wcale nie bedzie czekal az ow skrypt sie skonczy i wywali cos na wyjscie... (tak jak to robi fopen())

z gory thnx za pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
batman
post
Post #2





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




PHP nie oferuje wielowątkowości. Kiedyś wrzucałem linka do ominięcia tego problemu, ale nie mogę go znaleźć. Polegało to na tym, że skrypt wywoływał inne skrypty przy pomocy curl-a.


edit
Znalazłem - wielowątkowość w PHP. Nie sprawdzałem czy działa.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
l0ud
post
Post #3





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


Zerknij tutaj:
http://forum.php.pl/index.php?showtopic=88290


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
-gox-
post
Post #4





Goście







ok fajnie fajnie

male zastrzezonka:
php oferuje pelna watkowosc smile.gif z liba ;p

nie qmam z tym przekierowaniem gdzies,

odpalam pod windowsem
Go to the top of the page
+Quote Post
-gox-
post
Post #5





Goście







Oh, magiczne proc_open(), czulem ze ta funkcja potrafi wiecej smile.gif
Go to the top of the page
+Quote Post
batman
post
Post #6





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Cytat
php oferuje pelna watkowosc
Niby jak? Jeśli już, to jest to jakaś okrętka, która umożliwia symulowanie wielowątkowości.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
-gox-
post
Post #7





Goście







Niezdety... postepuje tak jak tutaj przykazano:

http://forum.php.pl/index.php?showtopic=88290 >> http://blog.lipek.net/index.php/2008/02/26...-procesu-w-tle/

i nie daje to efektu.. skrypt nadal czeka na zakonczenie procesow....
moze nie wykorzystuje w pelni mozliwosci tych funkcji proc_open().. heh w sumie to ze nie wykorzystuje nie ulega watpliwosci.. pytanie tylko czy Da sie nie czekac na zakonczenie takiego procesu.... mi to sie nie udaje...

kodzik:

  1. <?php
  2.    function getmicrotime(){
  3.        list($usec, $sec) = explode(' ',microtime());
  4.        return ((float)$usec + (float)$sec);
  5.    }
  6.    
  7.    $time_start = getmicrotime();
  8.    
  9.    proc_close(proc_open ("ping wp.pl >> log.txt", array(), $pipes));
  10.    proc_close(proc_open ("ping wp.pl >> log.txt", array(), $pipes));
  11.    proc_close(proc_open ("ping wp.pl >> log.txt", array(), $pipes));
  12.    proc_close(proc_open ("ping wp.pl >> log.txt", array(), $pipes));
  13.    
  14.    
  15.       echo "\nKoniec skryptu PHP\n";
  16.    $time_end = getmicrotime();
  17.    $time = $time_end - $time_start;
  18.    echo "\n\nCzas trwania: $time sekund\n";
  19. ?>


Prosze, niech ktos pochyli sie nad tym problemem.. bedzie dla potomniastych! smile.gif
Go to the top of the page
+Quote Post
-gox-
post
Post #8





Goście







Chyba mi sie udalo smile.gif


  1. <?php
  2. $a = popen('ping wp.pl && ping wp.pl && ping wp.pl && ping wp.pl', 'r');
  3.    echo 'robie cos1';
  4.    $b = popen('tracert wp.pl', 'r');
  5.    echo 'robie cos2';
  6. ?>


Moge wywolywac polecenia na powloce jedno po drugim nie czekajac za zakonczenie poprzedniego smile.gif
co prawda skrypt nie zakonczy sie dopoki jakis proces dziala ale to nic.
nalezy pamietac, ze wymagane jest przypisywanie uchwytu, jesli tego nie zrobimy, kazde kolejne popen() bedzie czekac na zakonczenie poprzedniego...

Oh Yessss!
Go to the top of the page
+Quote Post
-gox-
post
Post #9





Goście







Podsumowujac, sprawdzane pod windowsem...

taki kod:

  1. <?php
  2.    $parametry = array(    'wp.pl',
  3.                        'onet.pl',
  4.                        'google.pl',
  5.                        'cos.pl',
  6.                        'lol.pl',
  7.                        'home.pl',
  8.                        'nazwa.pl',
  9.                        'php.pl',
  10.    );
  11.    srand();
  12.    $count = count($parametry);
  13.    for($i=0;$i<$count; $i++) {
  14.        $var = sha1(uniqid(rand(), true));
  15.        $$var = popen("ping $parametry[$i]", 'r');
  16.        echo "$i Proces\n";
  17.    }
  18.    exit;
  19.    
  20. ?>


Uruchomi nam pracujacych rownoczenie 8 procesow cmd.exe oraz 8 procesow ping.exe, czyli dokladnie to co chcialem osiagnac tworzac ten topic, dziekuje za uwage.
Go to the top of the page
+Quote Post
-gox-
post
Post #10





Goście







Eh, a jednak nie jest tak rozowo, po jakims czasie pojawia sie zlowieszczy komunikat:

Warning: popen(xxx.exe,r): To o many open files in (..)

...
soł problem pozostaje otwarty.
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: 22.08.2025 - 05:03