создание событий

bratskiy

Новичок
Не нравится мне такой подход. Буду делать так:

1. Создаём сокет, соединяемся, авторизуемся.

2. В методе, который запускает jabber клиент, создаётся два дочерних процесса. Первый будет в цикле читать сокет на предмет наличия новых сообщений на сервере. Второй будет отлавливать сигналы от внешних процессов (Process Control Functions), на предмет получекния сообщений с веба и, в случае чего считывать их(сообщения) с shared memory. Родительский процесс будет осуществлять контроль исполнения.

3. Скрипт отправки сообщений с веба отправляет сигнал процессу-джабберклиенту о том что сообщение отправлено и запишет его в shared memory.

Всё. Так думаю правильнее всего будет. Если кто не согласен, пишите
 

OZ

Новичок
bratskiy, сокет нельзя сохранить в файле.
Ты писал:
function run() ---В эту функцию надо передать данные из вне
Если я правильно тебя понял, тебе нужно написать отдельно скрипт демона, который будет поддерживать соединение, слушать сокет и проверять shared memory (или файл) на случай появления сообщений для отправки.
 

bratskiy

Новичок
OZ
Да, ты всё правильно понял.
Скрипт отправки сообщения при помощи posix_kill() отправляет сигнал демону, демону ловит этот сигнал и отправляет сообщение.

У меня вопросик:
Есть функция pcntl_signal(). Она регистрирует функцию, которая будет реагировать на получении определённого сигнала.
Где правильнее объявлять функцию обработчик, до pcntl_signal или после, и в чём разница?

В разных источниках написано по разному. Я пробовал и так и так. У меня в случае если функция-обработчик объявлена после pcntl_signal, демон реагирует на сигнал тут же, но выскакивает ошибка: can'not read socket. Если обработчик объявлен перед pcntl_signal, ошибка не возникает, сообщение уходит, но с задержкой, сигнал обрабатывается только после того как с jabber сервера придёт каой-либо пакет.

Я понимаю что код у меня не совсем корректно написан, но всё же в чём разница?
 

Wicked

Новичок
bratskiy
может пойти по более традиционной схеме -- демоном параллельно слушать порт и уметь принимать на него коннекты, по которым будут передаваться сообщения?
 
Сверху