Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]W jaki sposób można uruchomić wiele wątków jednego skryptu ?
finka
post
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 13.01.2014

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


Mój sktypt działa na bazie kilku milionów rekordów i porównuje każdy z tych rekordów z każdym innym.
W każdym razie nie chodzi o sposób działania tylko o fakt, że zanim mi wszystko sprawdzi to chyba z rok minie :/
Skrypt praktycznei w ogóle nie obciążą serwera.

Czy jest możliwość aby odpalić np 100.000 instancji tego skryptu, tak aby wykorszystał pełne zasoby maszyny no i żeby mi wszystko przeliczył w miarę szybko ?
Go to the top of the page
+Quote Post
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


1. Pisanie aplikacji wielowątkowych w PHP do najmilszych nie należy, jednak jest to do zrobienia.
2. W jaki sposób pojedynczy rekord jest porównywany z całą resztą pozostałych?
Go to the top of the page
+Quote Post
vermis
post
Post #3





Grupa: Zarejestrowani
Postów: 279
Pomógł: 56
Dołączył: 3.06.2010
Skąd: Tarnowskie Góry

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


Cytat(finka @ 28.01.2014, 22:27:19 ) *
Skrypt praktycznei w ogóle nie obciążą serwera.


To znaczy że coś go ogranicza skoro nie korzysta z dostępnych zasobów. Stawiam, że jednak obciąża, ale pewnie dysk przez co CPU się nudzi, bo ciągle czeka na dane.
Go to the top of the page
+Quote Post
finka
post
Post #4





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 13.01.2014

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


Serwer jest na mocnym i7 + 32Gb Ram, i nie widzę praktycznie żadnej różnicy, gdy skrypt jest odpalony lub nie, zapisów na dysk też raczej wiele nie ma, więc stąd moje pytanie, jak
wykorzystać lepiej dostęne zasoby ?

Cytat(Crozin @ 28.01.2014, 23:34:51 ) *
2. W jaki sposób pojedynczy rekord jest porównywany z całą resztą pozostałych?


W skrócie: są 2 pętle while. Pierwsza pobiera wszystkie rekordy, tam sobie je jakoś obrabia i porównuje każdy z rekordami pobranymi za pomocą drugiej pętli while.
Każde takie porównanie to tak naprawdę kilka porównań, bo po drugim while jest jeszcze pętla for...

W każdym razie skoro piszecie, że pisanie aplikacji wielowątkowych nie jest łatwą sprawą, to może da się to jakoś obejść prostym 'chłopskim sposobem' odpalajać np
skrypt wielokrotnie lub coś w tym stylu, tak żeby to chociaż trochę szybciej działało niż w tym momencie ?
Go to the top of the page
+Quote Post
Crozin
post
Post #5





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Cytat
W każdym razie skoro piszecie, że pisanie aplikacji wielowątkowych nie jest łatwą sprawą, to może da się to jakoś obejść prostym 'chłopskim sposobem' odpalajać np
skrypt wielokrotnie lub coś w tym stylu, tak żeby to chociaż trochę szybciej działało niż w tym momencie ?
Jest nieco bardziej skomplikowane, ale nie jest to jakaś wyjątkowo trudna sprawa. Po prostu PHP jest do tego bardzo słabą platformą, gdyż nigdy nie była projektowana w tym celu i brakuje jej całej masy narzędzi do takiej pracy.

Czy jesteś wstanie pokazać kod? To czy będzie się dało w PHP to jakoś "zrównoleglić" zależy od wielu czynników. Ewentualnie dopisz dokładnej na czym polega i jak działa to obrabianie. Jednym z prostszych sposobów jest po prostu odpalenie danego skryptu n razy, gdzie n to np. liczba rdzeni CPU, i ustawienie by dany skrypt odpalał co n-ty rekord. Ale to czy takie coś można zastosować czy nie zależy od wielu rzeczy, jak już pisałem.
Go to the top of the page
+Quote Post

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: 24.08.2025 - 13:27