Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]W jaki sposób można uruchomić wiele wątków jednego skryptu ?
Forum PHP.pl > Forum > Przedszkole
finka
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 ?
Crozin
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?
vermis
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.
finka
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 ?
Crozin
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.