Переключатели на основе целых чисел могут быть оптимизированы к очень efficent код. Переключатели на основе другого типа данных могут только быть скомпилированы в серию если () операторы.
По этой причине C & C++ только позволяет, включает целые типы, так как это было бессмысленно с другими типами.
разработчики C# решили, что стиль был важен, даже если не было никакого преимущества.
разработчики Java, по-видимому, думали как разработчики C.
Вы определенно можете отслеживать дочерний процесс:
$pid = pcntl_fork();
if ($pid == -1) {
die('could not fork');
} else if ($pid) {
// we are the parent
pcntl_waitpid($pid, $status, WUNTRACED); //Protect against Zombie children
if (pcntl_wifexited($status)) {
echo "Child exited normally";
} else if (pcntl_wifstopped($status)) {
echo "Signal: ", pcntl_wstopsig($status), " caused this child to stop.";
} else if (pcntl_wifsignaled($status)) {
echo "Signal: ",pcntl_wtermsig($status)," caused this child to exit with return code: ", pcntl_wexitstatus($status);
}
} else {
pcntl_exec("/path/to/php/script");
echo "Could not Execute...";
}
РЕДАКТИРОВАТЬ:
Для пояснения относительно обмена сообщениями между родительским и дочерним процессом; вы определенно не можете перехватить исключения между процессами. Что касается обмена сообщениями, то при использовании только библиотеки PCNTL вы также ограничены обработкой сигналов и кодов выхода.
Не зная, что именно вы делаете. У вас есть множество других вариантов. Я' d предложить одно из следующих решений для асинхронного обмена сообщениями, поскольку они могут удовлетворить ваши потребности.
На основе файлов
Ваши дочерние процессы могут записывать сообщения в файл, который будет опрошен родителем.
На основе Memcache
То же, что и выше, но с использованием memcached в качестве среды связи.
На основе базы данных
То же, что и выше, но с использованием таблицы db в качестве среды связи.
Семафор PHP / библиотека IPC
http: / /us3.php.net/manual/en/book.sem.php
Это позволяет вам использовать такие методы, как msg_send () и msg_receive () для взаимодействия между процессами.
Я уверен, что один из них предоставит решение, которое вы ищете. Однако подробное рассмотрение того, как использовать любой из этих методов, вероятно, выходит за рамки этого вопроса,