Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Uruchamianie programu w C poprzez PHP
Forum PHP.pl > Forum > PHP
sADAM83
Sytuacja wygląda tak mam portal internetowy, który umożliwia upload plików, które następnie mają zostać przetworzone przez istniejący program w C znajdujący się gdzieś na serwerze. Program ten musi mieć podany plik i na jego podstawie generuje plik wynikowy, który jest wysyłany do użytkownika.
W jaki sposób wywoływać ten program z poziomu php, jak rozwiązań problem kolejkowania zadań (wybór odpowiedniej kolejności plików do przetworzenia). Nie oczekuje oczywiście gotowego rozwiązania, tylko jakieś wskazówki lub miejsce gdzie mogę znaleźć informacje na interesujący mnie temat.
yevaud
napisalbym oddzielny skrypt(program?) ktory bylby odpalony caly czas i czekal na nowe zgloszenia do roboty
do przetrzymywania zadan wykorzystalbym baze(zalatwia problem synchronizacji przy dostepie do zasobow)
w momencie gdy skrypt wiedzialby ze sa nowe zadania do przetworzenia, pytalby baze o zadania i wysylal je po kolei do Twojego programu w C(exec)

pozostaje tylko problem powiadomienia naszego skryptu ze jest cos do roboty, zeby nie katowal bazy ciaglymi pytaniami o zadania, jesli nie przeszkadza Ci niewielkie opoznienie to skrypt moglby np. co pare sekund pytac baze czy jest cos nowego dla niego, wtedy w ogole nie ma problemu
jesli wyjatkowo zalezy Ci na czasie, to wtedy Twoja aplikacja moze odezwac sie do skryptu przez jakis socket, wydaje mi sie ze zwykly phpowy stream tez sie nada - dzieki temu nie tracilbys ani sekundy i Twoj skrypt natychmiast wiedzialby ze pojwilo sie cos do roboty i pytal baze o to co jest w "kolejce"

oczywiscie mozna ten problem rozwiazac na wiele roznych sposobow, ale ten wydaje mi sie calkiem ok winksmiley.jpg
thek
A to nie można użyć w skrypcie funkcji exec by wywołać program z zadanymi parametrami? winksmiley.jpg
yevaud
@thek
mozna, ale kolega chcial to kolejkowac smile.gif
deniol13
hmm, exec i cron?
yevaud
@deniol13
cron jest co minute winksmiley.jpg jak mowilem kolega chce kolejkowac
sADAM83
Wielki dzięki za szybką odpowiedź na nurtujące mnie kwestie. Zadania muszą być kolejkowane bo mają różne priorytety wykonania ( 3 grupy zadań ), rzeczywiście można by jego było przechowywać w tabeli tymczasowej, usuwając po wykonaniu. Po przeczytaniu waszych cennych uwag wydaje mi się że najlepiej rzeczywiście będzie stworzyć skrypt, który uruchomi funkcje w C.
Czy cykliczne uruchamianie skryptu ( co jakiś czas ) może odbywać się tylko za pomocą crona ?
I jeszcze jedno pytanko może trochę naiwne ale nie używałem nigdy crona. Powiedzmy że mamy crona ustawionego tak żeby wykonywał skrypt co minute. Skrypt ma jednak do przetworzenia tyle zadań, że wykonuje się powiedzmy 30 minut. Czy cron mimo tego że skrypt coś tam przetwarza, będzie go próbował ponownie odpalać ? Nie wpłynie to na poprawne działanie skryptu ?
yevaud
Cytat(sADAM83 @ 21.06.2010, 10:15:38 ) *
Czy cykliczne uruchamianie skryptu ( co jakiś czas ) może odbywać się tylko za pomocą crona ?

to najlatwiejszy sposob zeby zalatwic problem smile.gif

Cytat(sADAM83 @ 21.06.2010, 10:15:38 ) *
Powiedzmy że mamy crona ustawionego tak żeby wykonywał skrypt co minute. Skrypt ma jednak do przetworzenia tyle zadań, że wykonuje się powiedzmy 30 minut. Czy cron mimo tego że skrypt coś tam przetwarza, będzie go próbował ponownie odpalać ? Nie wpłynie to na poprawne działanie skryptu ?

cron bedzie probowal go odpalac tak czesto jak mu kazesz, nic wiecej go nie obchodzi. Wtedy skrypt powinien wykryc inna uruchomiona instancje i sie wylaczyc. Najlatwiej to osiagnac tworzac jakis plik tymczasowy.
tzn. Skrypt sie wlacza, sprawdza czy istnieje plik, jesli tak to konczy prace, jesli nie to go tworzy i bierze sie do roboty, po skonczonej robocie kasuje plik.
uzycie try except jest tutaj dobrym pomyslem winksmiley.jpg warto tez w pliku wrzucic pid procesu, skrypt moglby sprawdzac czy proces o tym pid na pewno istnieje - zeby nie bylo sytuacji ze skrypt z jakiegos powodu calkiem padl, a plik zostal i blokuje system
sADAM83
Dobra czyli na razie chyba wiem co i jak winksmiley.jpg . Reszta wyjdzie w praniu, wtedy pewnie ponownie podpytam tutaj winksmiley.jpg Jeszcze bardzo dziękuję.
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.