ilyichzc
Новичок
Не удается запустить демон
Написал сервер, запускаю как демон из консоли в Cent OS 5.0 из под рута. Пока я не закрыл SSH сессию сервер нормально пашет, но как только я отключаюсь клиент до него не может достучаться. Подсоединяюсь, смотрю ps aux - моего сервера нет в процессах.
Подскажите, что я делаю не так. Вот код запускайщей проги:
Написал сервер, запускаю как демон из консоли в Cent OS 5.0 из под рута. Пока я не закрыл SSH сессию сервер нормально пашет, но как только я отключаюсь клиент до него не может достучаться. Подсоединяюсь, смотрю ps aux - моего сервера нет в процессах.
Подскажите, что я делаю не так. Вот код запускайщей проги:
PHP:
if (!in_array("pcntl", get_loaded_extensions())) $this->addError("PCNTL is disabled!");
$pid = pcntl_fork();
if ($pid == -1){
trigger_error ("could not fork child process", E_USER_ERROR);
}
else if ($pid){
exit(0);
}
if (!posix_setsid()){
trigger_error ("could not detach from terminal", E_USER_ERROR);
}
pcntl_signal(SIGTERM, array($this, "sigHandler"));
pcntl_signal(SIGHUP, array($this, "sigHandler"));
pcntl_signal(SIGUSR1, array($this, "sigHandler"));
}
// --- Create server object -----------
$host = 'myhost.com';
$port = '12000';
$server = new MyServer($host, $port);
if (!is_object($server))
{
echo("FATAL ERROR: Can't create server object!");
exit(1);
}
$server->setDisplayErrors(true);
// --- Connect to MYSQL server -------------------------------------
$sql_host = 'localhost';
$sql_user = 'mysql_user';
$sql_password = 'mysql@password';
$sql_db = 'MyServerDB';
$server->db->connect($sql_host, $sql_user, $sql_password, true);
$server->db->sqlQuery("CREATE DATABASE IF NOT EXISTS {$sql_db} CHARACTER SET utf8 COLLATE utf8_general_ci", false);
$server->db->selectDb($sql_db);
$server->db->sqlQuery("set NAMES utf8", false);
// --- Add listener -----------------------
$listener = new GSDefaultListener($server);
$lid = $server->addListener($listener);
$server->start();
function sigHandler ($signo)
{
GLOBAL $server;
switch ($signo)
{
case SIGTERM:
$server->stop();
break;
default:
$server->logStr("Catch signal ".$signo);
break;
}
}