forked from Liar233/php-daemon
-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.php
48 lines (35 loc) · 1.95 KB
/
app.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
// Создаем дочерний процесс
$child_pid = pcntl_fork();
if( $child_pid ) {
// Выходим из родительского процесса, привязанного к консоли...
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);