Bagroff
Новичок
опять разветвление процессов, "переключение"
Пытаюсь разобраться с идеологией разветвления процессов, подправьте где не прав...
Код, ессес-но не рабочий, просто идея...
Мне навеяло
, примерно так... подправьте plz.
Ситуация вторая.
Хотелось бы поступать след. образом в идеале.
Висит сервер на locahost:2222 ждет соединений. Приперся клиент на localhost:2222, приперся с одназначно идентифицирующим себя(клиента) каким-то ключем, если ключа нет(новый клиент) делаем для него pcntl_fork "выполняемся" в этом процессе и оставляем child-процесс жить дальше в ожидании возвращения клиента с таким же ключем. Если же клиент, приперся с ключем, для которого уже был создан child-процесс когда-то, как "переключить" клиента на нужный child-процесс чтобы "выполниться" там с уже существующим каким-то окружением?
Пните идей, каша в голове
Пытаюсь разобраться с идеологией разветвления процессов, подправьте где не прав...
Код, ессес-но не рабочий, просто идея...
PHP:
// Создаем сокет, привязываемся на какой-то сетевой интерфейс и порт
$socket = socket_create (AF_INET, SOCK_STREAM, 0);
socket_bind ($socket, $host, $port);
socket_listen ($socket, 5);
...
// Ждем соединений...
while (true) {
$msg_socket = socket_accept($socket);
$pid = pcntl_fork();
if ($pid == -1) {
die('Could not fork child process');
} else if ($pid) {
// родитель
} else {
// порожденный процесс
// выполняем прикладную логику, какую-то...
SocketInit(); // читаем что пришло, socket_read
SocketAction(); // чего-то делаем...
SocketWrite(); // чего-то пишем в ответ
SocketClose(); // закрываемся...
// теперь нужно убиться, но это как-то через лес...
posix_kill(posix_getpid(), 9);
}
}
, примерно так... подправьте plz.Ситуация вторая.
Хотелось бы поступать след. образом в идеале.
Висит сервер на locahost:2222 ждет соединений. Приперся клиент на localhost:2222, приперся с одназначно идентифицирующим себя(клиента) каким-то ключем, если ключа нет(новый клиент) делаем для него pcntl_fork "выполняемся" в этом процессе и оставляем child-процесс жить дальше в ожидании возвращения клиента с таким же ключем. Если же клиент, приперся с ключем, для которого уже был создан child-процесс когда-то, как "переключить" клиента на нужный child-процесс чтобы "выполниться" там с уже существующим каким-то окружением?
Пните идей, каша в голове

