Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Php zamula stronę
Forum PHP.pl > Forum > Przedszkole
sasiadstar
Witam
napotkałem taki problem i nie wiem jak za bardzo to rozwiązać.
Skrypt przetwarza pliki w sposób automatyczny wrzucam i mogę wyjść ze strony.
Problem w tym że jak się "rozhula" to następny użytkownik traci możliwość wejścia na stronę bo strona się kręci i kręci aż do momentu zakończenia działania skryptu w tle.
Jak pohamować zapędy skryptu na moc obliczeniową? albo coś w tym stylu.
bostaf
Spróbuj z proc_nice albo - jeśli pliki przetwarzane są w pętli - dodać sleep albo usleep po zakończeniu każdej iteracji - w ten sposób oczywiście przedłużysz czas wykonywania całej sekwencji operacji, ale każdy sleep zrobi lukę dla innych procesów.
Pyton_000
Opisz trochę dokładniej jak działa ten proces.
sasiadstar
Wrzucam plik tekstowy (lista m3u), może mieć kilka kilka kB albo MB
plik jest rozbierany na czynniki pierwsze linia po lini
poniżej próbka
#EXTINF:-1 group-title="podstawowe" tvg-id="" tvg-name="" tvg-logo="WP_TV.png",WP TV
https://av-cdn-1.wpimg.pl/tv24/ngrp:wp1/chu...t_b1628000.m3u8
Sprawdzane jest czy każda linia pasuje do wzorca tj czy ma nazwe, czy nazwa pasuje do bazy danych czy jest adres url
Jeżeli tak to tworzy tablice temp , jak to skończy dodaje do głównej bazy danych usuwając duplikaty url i dodając adres obrazka i epg.

W oddzielnym skrypcie sprawdza czy url jest czynny czy nie i usuwa wadliwe tabele a na koniec generuje jeden plik z podstawionymi danymi
Raz dziennie w nocy o północy będzie analizował bazę danych pod kontem ważności linków, jak padnięty to aut z bazy danych i generowanie listy od nowa

i problem jest przy analizowaniu pliku wsadowego bo ma dużo do roboty.

Sprawdzę z usleep
Jakie czasy proponujecie 100-200ms ? czy dłużej
Pyton_000
Ale sam plik wysyłasz po prostu skryptem a potem jakiś cron to mieli czy przez Ajax pakujesz asynchronicznie?

Bo ja bym to zrobił na zasadzie crona.
Czyli robisz upload pliku do jakiegoś katalogu. Potem cron co 1 min odpala skrypt który mieli po 1 pliku. Dodatkowo do ustawia lock tak aby kolejny cron nie zadziałał dopóki ten się nie skończy.
W ten sposób nie powinieneś mieć problemów. Chyba że tu wchodzi w grę moc serwera który to mieli wtedy dodatkowo dokładasz proc_nice() na below normal. i powinno pomóc,
sasiadstar
Plik wysyłam ajaxem potem mam stronę wyboru czy zrobić to automatycznie czy ręcznie.
Jak auto wysyłam zadanie do pliku php jakie pliki ma przetrawić i na tym się kończy praca użytkownika.
W manualu wyświetla pasek postępu potem pokazuje błędne nazwy do poprawy a a koniec można sobie taka listę pobrać.
także spróbuje może z tym usleep narazie bo proc_nice wywala mi błąd
Fatal error: Uncaught Error: Call to undefined function proc_nice()
Nie wiem czy to wina tego ze pod windowsem to mam na xampie? bo jak tak to spróbuje na normalnym serwerze

Czy proc_nice();
mam umieścić w pierwszym skrypcie czy w każdym który będzie wywoływany z tego pierwszego ?
viking
Cytat
proc_nice() will only exist if your system has 'nice' capabilities. 'nice' conforms to: SVr4, SVID EXT, AT&T, X/OPEN, BSD 4.3. This means that proc_nice() is not available on Windows.


Swoją drogą właśnie przeglądam changelog PHP 7.2 i jest:

Cytat
proc_nice() is now supported on Windows platforms.
sasiadstar
Wracam do tematu
1 Mam PHP 7
2 To nie o to tu chodzi, skontaktowałem się z hostingiem i mi powiedzieli że wszystko działa OK (obciążenie) a problemem jest limit procesów php równy 4
Co kolwiek to znaczy to jest problemem.
I co z tym fantem teraz zrobić? i o co w ogóle z tymi limitami chodzi czy uruchomienie 4 razy pliku nazwa.php czy to jakoś inaczej działa

Nie rozumiem jednej zeczy jakim cudem w trybie manualnym gdzie pokazuje sie pasek postępu użytkownikowi można kilka stron otworzyć i jest ok.
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.