Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Multi thread w PHP
sebax3x
post
Post #1





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 8.03.2008

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


Cześć,

Mam funkcję w php, która pobiera dane z innej strony, jedno wywołanie trwa ok 30 sek - pobiera dane,obrazki, konkwertuje.
Chciałbym odpalić ją kilka razy w tym samym czasie dla różnych danych, aby przyspieszyć proces (czyli coś na zasadzie multi threading).

Próbowałem z klasą Thread https://github.com/krakjoe/pthreads, ale był z ną problem na moim serwerze (nie chcę tego używać).
Próbowałem też za pomocą:

  1. for ($i=0; $i<10; $i++) {
  2. // open ten processes
  3. for ($j=0; $j<10; $j++) {
  4. $pipe[$j] = popen('script2.php', 'w');
  5. }
  6.  
  7. // wait for them to finish
  8. for ($j=0; $j<10; ++$j) {
  9. pclose($pipe[$j]);
  10. }
  11. }


Ale wogle nie odpala się skrypt script2.php,

curl multi init w moim przypadku się nie sprawdzi - chciałbym coś podobnego, ale żeby to działało nie na zasadzie asynchronicznego pobierania stron, tylko wywoływania mojej funkcji.




Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
aniolekx
post
Post #2





Grupa: Zarejestrowani
Postów: 340
Pomógł: 46
Dołączył: 31.07.2009
Skąd: A

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


nie dziala bo zapomniales dodac "php" przed skryptem

trochę zmodyfikowałem twoja wersje:

  1. $processes = [];
  2. $errors = [];
  3. for ($ii=0; $ii<10; $ii++) {
  4. for ($j=0; $j<10; $j++) {
  5. $processes[$j] = popen('php script2.php', 'r');
  6. }
  7. foreach ($processes as $i => $process) {
  8. $error_text = stream_get_contents($process);
  9. if ($error_text != "") {
  10. $errors[] = "From threading process #$i:";
  11. foreach (explode("\n", $error_text) as $error) {
  12. $errors[] = $error;
  13. }
  14. }
  15. $status = pclose($process);
  16. if ($status != 0) {
  17. $errors[] = "Child process exited with status $status";
  18. }
  19. }
  20. }
  21.  
  22. var_dump($errors)


Ten post edytował aniolekx 4.11.2014, 14:16:20
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 8.10.2025 - 02:04