public function errorHandler($errno, $errstr, $errfile, $errline, array $errcontext) { $error = compact("errno", "errstr", "errfile", "errline"); if ((int) $errno & (E_ERROR | E_PARSE | E_CORE_ERROR | E_COMPILE_ERROR | E_WARNING)) { $this->trigger("error", $error); } log::error(var_export($error, 1)); }
protected function onInStreamClose() { $this->inStream->off("close", [$this, "onInStreamClose"]); // If stream is closed, but no STOP event received if ($this->isProcOpen()) { $pid = $this->getPID(); $sig = $this->getTermSig(); $error = "Unexpected child death ({$pid}): " . ($sig ? "signaled {$sig}" : "unknown reason"); log::error($error); $this->trigger("error", $error); $this->trigger("stop"); } }
protected function log($msg) { $error = false; if ($msg instanceof \Exception) { $msg = sprintf("Exception (%d) %s in %s:%d", $msg->getCode(), $msg->getMessage(), $msg->getFile(), $msg->getLine()); $error = true; } if (!$this->canLog) { echo "{$msg}\n"; return; } if ($this->verbose) { echo "{$msg}\n"; } $error ? log::error($msg) : log::info($msg); }
public function onData(Event $event) { $this->messages .= $data = $event->getData(); $i = 0; while (false !== ($msg = $this->extractMessage())) { $i++; $eventObject = unserialize($msg); foreach ($this->listeners as $listener) { $listener->trigger($eventObject); } } if ($this->messages && !$i) { $msg = $this->messages; if (strlen($msg) < 100) { $msg = "0x" . bin2hex($msg); } log::error("Got broken message:\n{$msg}"); log::error("last data: " . var_export($data, 1)); } }
#!/usr/bin/php <?php $dir = dirname(dirname(__FILE__)); if (is_file("{$dir}/vendor/autoload.php")) { $autoloadFile = "{$dir}/vendor/autoload.php"; } else { $autoloadFile = dirname(dirname($dir)) . "/autoload.php"; } include_once $autoloadFile; if ($argc < 4) { echo "Wrong argument count"; exit(1); } $requiredFiles = unserialize(base64_decode($argv[1])); foreach ($requiredFiles as $requiredFile) { require $requiredFile; } $calleeEntity = unserialize(base64_decode($argv[2])); $calleeMethod = unserialize(base64_decode($argv[3])); $arguments = $argc > 4 ? unserialize(base64_decode($argv[4])) : []; if (is_string($calleeEntity)) { $calleeEntity = new $calleeEntity(); } $child = new \Phasty\Process\Child($calleeEntity); try { call_user_func_array([$calleeEntity, $calleeMethod], $arguments); } catch (\Exception $e) { $child->trigger("error", $e->getMessage()); \Phasty\Log\File::error($e->getMessage()); }
protected function logByType($msg, $type) { if (!$this->canLog) { echo "{$msg}\n"; return; } if ($this->verbose) { echo "{$msg}\n"; } switch ($type) { case 'error': log::error($msg); break; case 'debug': log::debug($msg); break; default: log::info($msg); } }