Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 338 Pomógł: 2 Dołączył: 4.03.2006 Skąd: Łódź Ostrzeżenie: (0%)
|
Dawno mnie tu nie było (IMG:style_emoticons/default/smile.gif)
Forumowicze, problem z kolejką w PHP. System, który tworzę przetwarza dane co minutę (z CRONa). Niestety uruchomienie pojedynczego procesu np, przetwarzaj.php nie kończy się w 1 minucie, ponieważ przetwarzanie danych może trwać np. 2 mninuty dla pojedynczego rekordu bazy danych, a rekordów jest np. 20. Teoretycznie szeregowe uruchomienie przetwarzania zajmie więc 40 min. Każdy przetwarzaj.pho bierze z bazy zatem 1 rekord i tylko taki mieli. Moje pytanie: w jaki sposób napisać kolejkę, która poprawnie przetworzy takie dane? Wywołać z crona 20x ten sam przetwarzaj.php? Zanim proces zacznie wykonywać swoją pracę, ustawia na rekordzie bazy, że jest on przetwarzany, więc inny proces weźmie kolejne dane. Spotkaliście się z podobnym problemem, macie pomysły? |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 5.12.2006 Ostrzeżenie: (0%)
|
Witajcie,
Pewnie mnie teraz zjedziecie, bo jak śmiem... (IMG:style_emoticons/default/smile.gif) Ale zaryzykuję. Uważam, że metody które podaliście, to zabijanie muchy przy użyciu czołgu. Ja swojego czasu miałem podobny problem. Potrzebowałem mechanizmu częstego uruchamiania procesu, który może trwać chwilę, lub pół godziny, i warunek - procesy nie mogły działać równolegle. I rozwiązałem to na zasadznie sprawdzania pliku typu lock. czyli coś w stylu: jeden plik odpalany np. co minutę z crona (np cron.php)
oraz drugi plik zrob_cos.php który wykonywał nasze zadania. To taki ogólny zarys, ale.. proste, banalne i skuteczne (IMG:style_emoticons/default/smile.gif) Ten post edytował cezet 30.05.2012, 13:13:31 |
|
|
|
Prph Kolejka w PHP, 23.05.2012, 05:35:28
Crozin Podstawowe pytanie: czy przetworzenie kilku, np. m... 23.05.2012, 06:21:21
Prph Tak, przecież zostaną wykonane równolegle. Wykonaj... 23.05.2012, 06:39:57 
!*! Cytat(Prph @ 23.05.2012, 07:39:57 ) T... 23.05.2012, 07:01:57
hind Zły tok rozumowania... równoległe uruchomienie spw... 23.05.2012, 07:05:05
Prph No bez przesady. 16 rdzeni przetworzy szybciej 16 ... 23.05.2012, 07:17:50
Crozin To może inaczej, co jest powodem tak długiego prze... 23.05.2012, 07:23:40
Prph No to jest odpowiedź na wysokim poziomie
Proces ... 23.05.2012, 18:51:59
Crozin CytatProces nie obciąża procesora. Długo wykonuje ... 23.05.2012, 19:12:56
Niktoś Php z natury nie jest wielowątkowe(czyt.threading)... 23.05.2012, 19:14:15
Prph Zrobione za pomocą forkowania. Aż miło patrzeć jak... 24.05.2012, 06:19:42
Crozin Aż mnie coś wzięło, żeby zobaczyć jak można zrobić... 27.05.2012, 00:21:13
Crozin Cytat[...] procesy nie mogły działać równolegle.A ... 30.05.2012, 13:49:20
greycoffey Nie zjedziemy, acz wytkniemy błąd.
Ten skrypt to t... 30.05.2012, 13:52:30
cezet Zwracam honor 30.05.2012, 14:12:33 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 13:32 |