У меня есть сценарий для ограничения времени выполнения команд. limit.php <?php declare(ticks = 1); if ($argc<2) die("Wrong parameter\n"); $cmd = $argv[1]; $tl = isset($argv[2]) ? intval($argv[2]) : 3; $pid = pcntl_fork(); if (-1 == $pid) { die('FORK_FAILED'); } elseif ($pid == 0) { exec($cmd); posix_kill(posix_getppid(), SIGALRM); } else { pcntl_signal(SIGALRM, create_function('$signo',"die('EXECUTE_ENDED');")); sleep($tl); posix_kill($pid, SIGKILL); die("TIMEOUT_KILLED […]
Я пытаюсь создать процесс демона, который обрабатывает несколько дочерних потоков. Но дочерний поток, похоже, не посылает сигнал родительскому устройству для вызова функции. я попытался вывести его из класса и сделать его стандартной функцией, но это тоже не помогает. class Daemon { public function __construct() { $set = pcntl_signal(SIGCHLD, array($this, 'childSignalHandler')); $pid = pcntl_fork(); if ($pid […]
Я столкнулся с довольно странным поведением с завитом Если я сделаю запрос SSL, используя curl в родительском процессе, а затем разветвит процесс и попытаюсь сделать еще один запрос SSL в дочернем процессе, попытка будет неудачной с ошибкой no. 35 (Ошибка подключения SSL). Если я не сделаю запрос SSL в родительском, то в дочернем процессе удастся. […]
Я устанавливаю храповик php websocket. Я делаю pcntl_fork в методе onMessage для работы с каждым клиентом в новом потоке. public function onMessage(ConnectionInterface $from, $msg) { $pid = pcntl_fork(); if ($pid == -1) { $this->myPrint("cant create fork"); } else if ($pid) { } else { // ….. $result $from->send($result); // $pid = getmypid(); // exit($pid); } […]
Я пытаюсь разблокировать процесс командной строки XAMPP, используя pcntl_fork (). Когда я запускаю команду ниже: $pid = pcntl_fork(); if($pid == -1){ file_put_contents('testlog.log',"\r\nFork Test",FILE_APPEND); return 1; //error } else if($pid){ return 0; //success } else{ file_put_contents($log, 'Running…', FILE_APPEND); } Я получил: Fatal error: Call to undefined function pcntl_fork() Может ли кто-нибудь предложить, как это исправить?
У меня возникли проблемы с использованием класса mysqli в PHP, и я не смог найти ответ нигде. В моем сценарии класс создает соединение mysqli, которое он использует во всех своих функциях. Впоследствии этот скрипт вилки. Соединение также используется детьми, но я столкнулся с проблемой закрытия соединения (MYSQL Server Has Gone Away) у родителя, когда дети […]
Я запускаю свой код на CodeIgniter – Ubuntu Server. Я занимаюсь поиском асинхронных способов запуска функций. Это моя функция: <?php // Registers a new keyword for prod to the DB. public function add_keyword() { $keyword_p = $this->input->post('key_word'); $prod = $this->input->post('prod_name'); $prod = $this->kas_model->search_prod_name($prod); $prod = $prod[0]->prod_id; $country = $this->input->post('key_country'); $keyword = explode(", ", $keyword_p); var_dump($keyword); […]
У меня есть следующий тестовый php для выполнения процесса fork / spawn, где тест также пытается убить дочерний процесс (zombie) после завершения. Я хотел бы иметь более эффективный процесс, когда любые дочерние процессы немедленно удаляются из таблицы процессов как можно скорее. Текущая попытка заполняет таблицу процессов и вызывает проблему выделения памяти, которая отключает систему. Приложение […]
С помощью двух предыдущих вопросов у меня теперь есть рабочий скребок HTML, который передает информацию о продуктах в базу данных. То, что я сейчас пытаюсь сделать, эффективно улучшается, обертывая мой мозг, получая мой скребок, работающий с pcntl_fork . Если я разделяю скрипт php5-cli на 10 отдельных кусков, я улучшаю общее время выполнения большим фактором, поэтому […]
Я хочу добиться следующего: Инициализируйте массив. Детский процесс добавляет некоторые элементы в массив. Родительский процесс добавляет некоторые элементы в массив. Наконец, перед выходом, напечатайте все элементы. Ниже приведен код, который я написал: <?php $values=array(); $pid = pcntl_fork(); if (!$pid) { sleep(2); $values[]="Put by child"; exit(0); } $values[]="Put by parent"; pcntl_waitpid($pid, $status); print_r($values); ?> Тем не […]