本文整理汇总了PHP中Worker::run方法的典型用法代码示例。如果您正苦于以下问题:PHP Worker::run方法的具体用法?PHP Worker::run怎么用?PHP Worker::run使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Worker
的用法示例。
在下文中一共展示了Worker::run方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: run
public function run()
{
$count = 0;
echo "Loading initial data...\n";
$this->db = wfGetDB(DB_SLAVE, null, 'wikicities');
$this->loadIndex();
$this->loadImagePaths();
echo "Processing...\n";
foreach ($this->meta as $city) {
echo " {$city['dbname']} ";
flush();
if ($this->dataExists($city['dbname'])) {
echo "skipped (data already exists)\n";
continue;
}
$lock = Lock::acquire_return('iter-' . $city['id']);
if (!$lock) {
echo "skipped (lock taken)\n";
continue;
}
$worker = new Worker($city['dbname'], $city);
if ($worker->run()) {
$city = array_merge($city, $worker->get());
$this->save($city['dbname'], $city);
}
$lock->release();
echo "done\n";
}
}
示例2: run
public function run()
{
$this->onMessage = array($this, 'onMessage');
parent::run();
}
示例3: init
$optsConfig = array('help|h' => 'Skrypt do generowania maili i smsów do wysyłki.', 'action|a=s' => "Lista dostępnych akcji: getsms|getmail|setupsms|setupmail");
include 'init.php';
class Worker extends Logic_Cmd_Action
{
protected $_worker;
public function init()
{
parent::init();
$this->_worker = new GearmanWorker();
}
protected function runAction()
{
$this->_worker->addServer();
$this->_worker->addFunction('setup', array(new Logic_Gearman_Worker_Setup(), "setup"));
$this->_worker->addFunction('sendpackage', array(new Logic_Gearman_Worker_Send(), "sendpackage"));
while (1) {
try {
$this->_worker->work();
// work() will block execution until a job is delivered
} catch (Exception $exc) {
$this->_logger->err($exc->getMessage());
}
if ($this->_worker->returnCode() != GEARMAN_SUCCESS) {
$this->_logger->err("An error has occured during gearman worker process..");
}
}
}
}
$cmd = new Worker($opts, $application);
$cmd->run();
示例4: forkOneWorker
/**
* 创建一个子进程
* @param Worker $worker
* @throws Exception
*/
protected static function forkOneWorker($worker)
{
$pid = pcntl_fork();
// 获得可用的id
$id = self::getId($worker->workerId, 0);
// 主进程记录子进程pid
if ($pid > 0) {
self::$_pidMap[$worker->workerId][$pid] = $pid;
self::$_idMap[$worker->workerId][$id] = $pid;
} elseif (0 === $pid) {
// 如果设置了端口复用,则在子进程执行监听
if ($worker->reusePort) {
$worker->listen();
}
// 启动过程中尝试重定向标准输出
if (self::$_status === self::STATUS_STARTING) {
self::resetStd();
}
self::$_pidMap = array();
self::$_workers = array($worker->workerId => $worker);
Timer::delAll();
self::setProcessTitle('WorkerMan: worker process ' . $worker->name . ' ' . $worker->getSocketName());
self::setProcessUser($worker->user);
$worker->id = $id;
$worker->run();
exit(250);
} else {
throw new Exception("forkOneWorker fail");
}
}