Michauuu
9.06.2011, 20:33:35
Cześć wszystkim,
Chce zrobić, właściwie już zrobiłem tyle, że moje rozwiązanie nie wypaliło, komunikacje telefon <-> komputer za pośrednictwem strony www.
W obecnym stanie telefon pobiera z serwera plik ...abc.php?zapytanie=abc. Serwer martwi się o to by dodać do swojej zawartości zawartość GET zapytanie. Komputer co jakiś czas odświeża plik, ogląda czy przyszło coś nowego i wykonuje zadania.
Rozwiązanie byłoby kapitalne gdybym chciał by komunikacja miała dwu minutowe opóźnienie bo takie potrafi czasem mieć. Moje pytanie czy da się zrobić coś lepszego? Nie mam obsługi shell ssh!
Zastanawiam się czy jest możliwość w php otworzyć port i na nim nasłuchiwać?
Czy moglibyście mi objaśnić działanie funkcji socket_[...]. Jest o tym jakaś dokumentacja ale wciąż zbyt mało. Czy porty są otwarte cały czas czy tylko przez mili sekundy gdy ładuje się skrypt? Po co musimy podawać address w socket_bind? Może jakieś szczegóły?
Dzięki
Jest możliwość zarówno otwarcia portu i odbierania połączeń, jak i nawiązywania połączeń z innymi serwerami. Funkcjom socket_xxx() nie jest specjalnie potrzebna szersza dokumentacja, ponieważ jest to implementacja uniwersalnego API obsługi gniazd wprowadzonego wieki temu przez systemy uniksowe i używanego praktycznie wszędzie. A to oznacza, że dokładniejsze omówienie znajdziesz w milionie różnych miejsc poświęconych obsłudze sieci.
Niestety obawiam się, że to Ci w niczym i tak nie pomoże. Jeśli chcesz mieć ciągłą komunikację, skrypt PHP musi działać cały czas. W sytuacji, gdy nie masz dostępu do shella, Twoje skrypty mogą być odpalone tylko na żądanie przeglądarki i mają określony limit czasu wykonania. Nie uda Ci się zatem nigdy trwale otworzyć jakiegoś portu, by na nim oczekiwać na dane, a wynika to zwyczajnie z zasady działania protokołu HTTP. Pomijam już fakt, że w PHP nie ma współbieżności, przez co pisanie w nim serwerów mija się kompletnie z celem.
Rozwiązaniem byłby programik odpalony na serwerze, który ściągałby dane na bieżąco i umieszczał w jakimś buforze, skąd czytałyby go skrypty PHP na życzenie przeglądarki. Opóźnień na linii serwer <-> przeglądarka nie unikniesz, bowiem to przeglądarka musi się serwera zawsze zapytać o dane. Ale przynajmniej obsługa żądania będzie dużo krótsza, bowiem sprowadzi się tylko do przeczytania zawartości bufora. Niestety, potrzebny jest do tego shell.