Pisząc nowy projekt natknąłem na problem z procesem uploadu filmiku do serwisu YouTube. Sam upload jest bardzo łatwy do napisania z Zend_Gdata_YouTube – przykład można znaleźć w manualu. Myślę, że zainteresowani przeczytają manual i wszystko będzie jasne. Więc jeżeli to takie proste, to w czym problem?
Zakładamy, że userzy uloadują filmiki bezpośrednio na nasz serwis. Nasz serwer ma za zadanie:
Pierwsze 2 kroki wykonają się błyskawicznie w porównaniu do trzeciego. Kompresja i nałożenie watermarku na 30 megowy plik z wykorzystaniem FFMPEG to nic nadzwyczajnego. Natomiast wysyłka pliku na serwery Youtube’a może zawiesić apache’a, gdy jest ich kilka.
Rozwiązanie? Wpadłem na pomysł, aby upload filmików ustawiony był w pewnego rodzaju kolejce, która uruchamiana by była co minutę (cron), a czas jednego wysłania elemntu nie mógłby przekroczyć 50 sekund. Oczywiście takie działanie uruchamiałoby swój osobny proces apache’a. Ten sposób jest ograniczony dwoma limitami: wielkością pliku oraz czasem jego uploadu na serwer (jednocześniem interwałem uruchamiania kolejki).
Czemu chcesz używać procesu Apache’a do uploadowania plików na YouTube? Nie wystarczy już umieszczone pliki kolejkować w np. aplikacji napisanej w pythonie lub rubym? Wydaje mi się, że skorzystanie z protokołów http(s) będzie szybsze niż zaprzęganie apache’a do tego.
Kolejka to kolejka, powinna chodzić 24/7 i być osobnym programem. Sprawdzać stan bazy, np. sqlite, ile plików oczekuje na wysłanie i po kolei je wysyłać (threads).
Tak przynajmniej ja bym to zrobił. Dwa programiki w Ruby lub C . Jeden kontroluje kolejkę i co jakiś czas wywołuje proces tego drugiego, co wysyła plik. Po wysłaniu “kolejkowicz” wywala plik z kolejki i leci dalej.
Taki proces może być napisany w PHP żeby było go łatwiej zintegrować z aplikacją bazową i ni kombinować z innymi językami. Uruchamianie takiego procesu też nie uruchamia apache i działa na zupełnie innych limitach np kompletny brak ograniczenia czasowego działania.
Dobrze, kwestia uruchamiania samego PHP jest już na pewno lepsza niż uruchamianie apache’a, o czym wspomniał autor.
“Oczywiście takie działanie uruchamiałoby swój osobny proces apache’a.”
Witam, to mój pierwszy komentarz tutaj, lecz mam pytanie dotyczące właśnie uploadu filmów na youtube. Czy korzystanie z pakietu Zend Framework oraz Youtube API jest jedyną opcją umożliwiającą tego typu upload ? Czy jeśli nie korzystam, z Zend Framework, również mam taką opcję ? Z góry dziękuję za odpowiedź.
@angelo: Tak, YT oferuje API, lecz w Zendzie jest to ładnie oprawione w klasy. Szkoda Twojego czasu, aby implementować to po swojemu, szybciej będzie jak postawisz osobną aplikację bazującą na ZF.