![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 1.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam na forum!
Szukałem, szukałem i się nie doszukałem - więc piszę. Czy jest możliwość uruchamiania wywołań systemowych w trybie nonblock? Dajmy na to, że posiadamy skrypt, który w pętli wywołuje program "wget" z odpowiednimi parametrami i pod koniec każdego obiegu pisze coś w rodzaju "Ok!\n" (na razie bez dokładniejszych analiz wyjścia) Niezależnie, czy używamy do tego metody system(), czy exec() skrypt taki uruchomiony z przeglądarki (serwowany przez defaultowo skonfigurowany apache1.3+php5) pokaże nam swój content dopiero gdy skończy pętlę i wszystkie wget-y (jeśli wcześniej nie dostanie timeouta)... Inaczej rzecz się ma, jeżeli skrypt uruchamiany z poziomu powłoki, wówczas sam z siebie działa w trybie nonblock i wypluwa odpowiedni output przy każdym obiegu pętli. Czy da się zrobić, aby tak samo zachowywał się przy odpalaniu z WWW? W grę wchodzi zarówno globalna (httpd.conf), jak i lokalna (.htaccess) rekonfiguracja apache, PHP, czy cokolwiek trzeba. Dla sprostowania dodam, że kiedyś widziałem jakąś opensource-ową galerię, która w ten sposób generowała thumbnaile używając ImageMagick, a więc pewnie też zapętlonych wywołań systemowych do jakiegoś /usr/bin/convert, czy coś. Niestety nie pamiętam co to było, więc nie mogę podejrzeć kodu. ![]() Z góry dzięki za wszelkie wskazówki. Pozdrowienia! ![]() |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 535 Pomógł: 27 Dołączył: 3.05.2005 Ostrzeżenie: (20%) ![]() ![]() |
Hmmm nie zrobisz tak tego chyba bo php czeka na zakończenie tego system() lub exec(), dokańcza parsowanie skryptu i dopiero wysyła dane do przeglądarki...
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 1.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
Wiem, o tym właśnie mówię i zaznaczam, że ten osobliwy sposób działania ma miejsce wyłącznie w przypadku parsowania tegoż PHP przez apache-a, bo "z shella" jest zupełnie inaczej.
Naprawdę nie ma sposobu na zmianę tego zachowania? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 535 Pomógł: 27 Dołączył: 3.05.2005 Ostrzeżenie: (20%) ![]() ![]() |
Jest jedna opcja jednak wyklucza ona php musisz użyć do tego perla, sam używam takiego systemu podczas uploadu zdjęć w swoim serwisie. Skrypt perla wywołany ze strony działa sobie i wysyła informację o postępie, następnie pobieram je ajaxem i ukazuje na stronie.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 1.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
Hm, dzięki za sugestię, ale chyba za słabo znam Perla.
Zastanawiałem się wręcz nad AJAXem, który po stronie JS łyknie jednowymiarową tablicę/hasha urli, które trzeba zassać i sam przeiteruje te wartości za każdym razem wysyłając zapytanie do PHP o ściągnięcie pojedyńczego pliku... "Trochę" na około, ale może... Gdyby jednak ktoś przypadkiem trafił na ten topic i znał sposób na egzekucję skryptu w trybie nonblock - byłbym bardzo wdzięczny. Krążenie w kółko tylko dlatego, że "technologia się nie wyrabia" zdaje się mało fajnym rozwiązaniem. :/ |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
takie cos da sie zrobic...
trocvhe to moze byc skomplikowane, ale np. jak chcesz wykonac iles razy wget'a to mozna w petli je wywolac wykorzystujac ramki, z czego kazdy skrypt jak zakonczy dzialanie wyswietli w kazdej ramce OK, czyli tak jak chcesz, ale wymagałoby to paru manewrów ![]() -------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 535 Pomógł: 27 Dołączył: 3.05.2005 Ostrzeżenie: (20%) ![]() ![]() |
Technologia się wyrabia jednak chcesz zastosować nie te właściwą.
Drzewo zetniesz nawet nożyczkami potrwa to pół roku, a piłą w 30 minut ![]() Użyj js + perl |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 07:39 |