Java - PHP Socket Communication
Здравейте,
Не съм сигурен дали ѝ е тук мястото на тази тема.... Та ето го въпроса ми.
Имам Java приложение, което следи дали има промени в дадена папка - дали е дабавен нов файл или нова папка, дали нещо е изтрито или променено, след това отваря сокет и праща съобщение към PHP и така показвам съобщението в браузъра. Изглежда обаче, че има някакъв проблем - приложението следи за проемни в дадена папка. Създавам нов файл в тази папка - на конзола се отпчатва съобщение и в същото време съобщението се пише в стрийма и когато рефрешна страницата, виждам съобщението. Създавам нов файл - рефрешвам и виждам съобщението. Проблема обаче идва, когато не рефрешна страницата и в същото време създам няколко файла. Тогава дори съобщението не се отпчетва на Java конзолата. Изглежда, че за да видя съобщението на конзолата все път трябва да рефрешвам браузъра. За момента това ми е проблема.
Чудя се дали не трябва да ползвам и AJAX... След като осъщества комуникацията между двете приложение, ще трябва да прихващам съобщеният а, да ги сложа в база данни, но това по - късно. За момента, комуникацията ми е проблема.
А ето го и кода ми:
Main
Reader:
Server:
PHP
Пуснах този въпрос и Stackoverflow, но ако може някой от тук също да погледне и да помогне ще е супер!
Поздрави,
Иван
Чакай, тая работа със сокетите в РНР не работи точно така.
Да речем, че имаш джавешко приложение, което слуша за събитие в някаква папка (не съм ти чел кода), което не съм сигурен дали не трябва да стане с един безкраен цикъл, че иначе приложението ще приключи изпълнение. Ок, регистрира ивент, прави връзка с друг сървър, в твоя случай отново с този компютър, на порт X, където слуша РНР приложение. РНР приложението му биват пушнати данни и то ги принтира.
Супер, до тук добре.
Това РНР приложение обаче също трябва да е дългоживееш процес, иначе тая работа няма да я бъде. Демек да бъде конзолно приложение. Ако е уеб приложение, ще получаваш данни само когато си отворил процеса, т.е. когато си достъпил приложението в браузъра. През останалото време, джавешкото приложение няма да има на кой да прати данните.
Сега идва въпросът - ти какви данни искаш да сторваш? Това със сокетите си е чист поток. Аз виждам, че има промяна в папка и ти се провиквам, че има такава, ако ти в този момент си говориш с друг човек и не ме чуеш, тая работа заминава и няма и да разбереш. Ти какво се опитваш да постигнеш? Отваряш РНР приложението и получаваш на куп информацията, която до момента е трябвало да ти бъде пратена + слушаш за още информация?
Да, точно това ми е идеята.
Ами ако не можеш да се конектнеш от джава към РНР-то, т.е. не е отворени приложението, пиши в база. Пък в РНР-то прави една проверка дали не трябва да погледнеш в базата и ако да, се свържи към същата база и дръпни информацията, в която е писало джава приложението докато те е нямало.
Хммм, малко не ми е много яано как да го направя това, PHP да прави проверка дали не трябва да погледне в базата дани....