Ejemplo n.º 1
0
    });
    $client->on("receive", function (swoole_client $cli, $data) use($pid) {
        lg("[{$pid}] Received: {$data}", __LINE__);
        $cli->close();
    });
    $client->on("error", function (swoole_client $cli) use($pid) {
        $cli->close();
        //lg("[$pid] error then conn close", __LINE__);
        exit(0);
    });
    $client->on("close", function (swoole_client $cli) use($pid) {
        //lg("[$pid] conn close", __LINE__);
    });
    $client->connect('127.0.0.1', 8001, 0.5);
    //lg("[$pid] create conn succ", __LINE__);
    exit(0);
}
if (isset($argv[1])) {
    $daemon = new Daemon(['func' => 'send', 'fork_num' => 1]);
    switch ($argv[1]) {
        case 'r':
            $daemon->run();
            break;
        case 'k':
            $daemon->stop();
            break;
        case 's':
            $daemon->status();
            break;
    }
}
Ejemplo n.º 2
0
    $dummy = new dummy();
    $dummy->setuniq();
    echo "Starting new child with: {$dummy->uniqid}\n";
    $daemon->childObject = $dummy;
    return TRUE;
}
function childDying(&$daemon, $pid)
{
    echo "Child with: {$daemon->currentObjects[$pid]->uniqid} terminating\n";
}
class dummy
{
    public $uniqid = NULL;
    function setuniq()
    {
        $this->uniqid = uniqid();
    }
    function stack()
    {
        while (1) {
            sleep(2000);
        }
    }
}
$job = new Daemon();
$job->procName = 'phpdaemon';
$job->bind('onLauncher', 'childStart');
$job->bind('onLaunchJob', 'childJob');
$job->bind('onChildTerminated', 'childDying');
$job->run();
Ejemplo n.º 3
0
<?php

require __DIR__ . '/libs/local.php';
require __DIR__ . '/libs/daemon.php';
require __DIR__ . '/libs/ElephantIO/Client.php';
ini_set('display_errors', 1);
error_reporting(E_ALL);
// TODO: Придумать, где брать путь
$logs_dir = __DIR__ . '/../../../../temp/logs/network/';
try {
    $daemon = new Daemon($logs_dir);
    $pid = $daemon->run();
    // TODO: Добавить периодическую проверку pid-файла на всякий случай.
} catch (Exception $e) {
    exit($e->getMessage());
}
$local = new Local();
$events_dir = $local->get_events_dir();
if (!is_dir($events_dir)) {
    mkdir($events_dir, 0777, true);
}
$local->save_daemon_pid($pid);
$local->log('info', 'Daemon started with pid "' . $pid . '"', 'fast');
$conn_data = $local->get_connection_data();
// TODO: Реакция на отключение сервера.
$elephant = new ElephantIO\Client($conn_data['url'], 'socket.io', 2, true, true, $local->is_debug(), $conn_data['namespace'], '127.0.0.1', 10000, 'file', $events_dir);
$elephant->setLogger($local);
$elephant->setLicence($conn_data['key'], $conn_data['domain']);
foreach ($local->get_events() as $event) {
    $elephant->on($event, function ($data) use($event, $local) {
        $local->log('info', 'Event received: ' . $event . '(' . serialize($data) . ')', 'fast');
Ejemplo n.º 4
0
    exit(0);
}
//	Делаем основным процессом дочерний...
posix_setsid();
//	Включаем тики, в противном случае скрипт просто повисает и не реагирует на внешние раздражители...
declare (ticks=1);
//	Здесь я подключаю всякую нужную штуку...
include __DIR__ . '/Daemon.php';
include __DIR__ . '/ExampleClass.php';
//	Класс изображающий полезную нагрузку...
$example = new ExampleClass();
//	Именно эта функция делает всякую полезую нам нагрузку, которую мы хотим демонизировать...
//	Если нам нужны какие-нибудь классы не забываем упомянуть их тут в противном случае простоо не получите к ним доступ...
$func = function () use($example) {
    // Тут живёт всякая полезная нагрука...
    $example->test();
    return true;
};
//	Собственно создаём демона, соответственно говорим ему куда записывать свой pid...
$daemon = new Daemon('/tmp/daemon.pid');
//	Закрываем порочные связи со стандартным вводом-выводом...
fclose(STDIN);
fclose(STDOUT);
fclose(STDERR);
//	Перенаправляем ввод-вывод туда куда нам надо или не надо...
$STDIN = fopen('/dev/null', 'r');
$STDOUT = fopen('/dev/null', 'wb');
$STDERR = fopen('/dev/null', 'wb');
//	Запускаем функцию несущую полезную нагрузку...
$daemon->run($func);
Ejemplo n.º 5
0
<?php

include_once 'daemon.php';
Daemon::run();
// declare(ticks=1);
//pcntl_signal(SIGUSR1, function() {
//	echo 'Got SIGUSR1';
//});
for ($i = 0; $i < 1800; $i++) {
    echo "\n{$i}";
    sleep(1);
}