本文整理匯總了PHP中log::log_show方法的典型用法代碼示例。如果您正苦於以下問題:PHP log::log_show方法的具體用法?PHP log::log_show怎麽用?PHP log::log_show使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類log
的用法示例。
在下文中一共展示了log::log_show方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。
示例1: start
public function start()
{
$this->parse_command();
// 爬蟲開始時間
self::$time_start = time();
// 當前任務ID
self::$taskid = 1;
// 當前任務進程ID
self::$taskpid = function_exists('posix_getpid') ? posix_getpid() : 1;
// 當前任務是否主任務
self::$taskmaster = true;
self::$collect_succ = 0;
self::$collect_fail = 0;
//--------------------------------------------------------------------------------
// 運行前驗證
//--------------------------------------------------------------------------------
// 多任務需要pcntl擴展支持
if (self::$tasknum > 1) {
if (!function_exists('pcntl_fork')) {
log::error("When the task number greater than 1 need pnctl extension");
exit;
}
}
// 保存運行狀態需要Redis支持
if (self::$save_running_state && !cls_redis::init()) {
log::error("Save the running state need Redis support,Error: " . cls_redis::$error . "\n\nPlease check the configuration file config/inc_config.php\n");
exit;
}
// 多任務需要Redis支持
if (self::$tasknum > 1 && !cls_redis::init()) {
log::error("Multitasking need Redis support,Error: " . cls_redis::$error . "\n\nPlease check the configuration file config/inc_config.php\n");
exit;
}
// 驗證導出
$this->export_auth();
// 檢查 scan_urls
if (empty(self::$configs['scan_urls'])) {
log::error("No scan url to start\n");
exit;
}
// 放這個位置,可以添加入口頁麵
if ($this->on_start) {
call_user_func($this->on_start, $this);
}
foreach (self::$configs['scan_urls'] as $url) {
if (!$this->is_scan_page($url)) {
log::error("Domain of scan_urls (\"{$url}\") does not match the domains of the domain name\n");
exit;
}
}
// windows 下沒法顯示麵板,強製顯示日誌
if (util::is_win()) {
log::$log_show = true;
} else {
log::$log_show = isset(self::$configs['log_show']) ? self::$configs['log_show'] : false;
}
if (log::$log_show) {
log::info("\n[ " . self::$configs['name'] . " Spider ] is started...\n");
log::warn("Task Number:" . self::$tasknum . "\n");
log::warn("!Documentation:\nhttps://doc.phpspider.org\n");
}
$status_files = scandir(PATH_DATA . "/status");
foreach ($status_files as $v) {
if ($v == '.' || $v == '..') {
continue;
}
$filepath = PATH_DATA . "/status/" . $v;
@unlink($filepath);
}
//--------------------------------------------------------------------------------
// 生成多任務
//--------------------------------------------------------------------------------
if (self::$tasknum > 1) {
// 不保留運行狀態
if (!self::$save_running_state) {
// 清空redis裏麵的數據
$this->cache_clear();
}
}
foreach (self::$configs['scan_urls'] as $url) {
$link = array('url' => $url, 'url_type' => 'scan_page', 'method' => 'get', 'headers' => array(), 'params' => array(), 'context_data' => '', 'proxy' => self::$configs['proxy'], 'try_num' => 0, 'max_try' => self::$configs['max_try']);
$this->queue_lpush($link);
}
while ($this->queue_lsize()) {
// 抓取頁麵
$this->collect_page();
// 多任務下主任務未準備就緒
if (self::$tasknum > 1 && !self::$taskmaster_status) {
// 如果隊列中的網頁比任務數多,生成子任務一起采集
if ($this->queue_lsize() > self::$tasknum * 2) {
// 主任務狀態
self::$taskmaster_status = true;
// fork 子進程前一定要先幹掉redis連接fd,不然會存在進程互搶redis fd 問題
cls_redis::close();
//task進程從2開始,1被master進程所使用
for ($i = 2; $i <= self::$tasknum; $i++) {
$this->fork_one_task($i);
}
}
}
//.........這裏部分代碼省略.........
示例2: run
/**
* 運行worker實例
*/
public function run()
{
$this->time_start = microtime(true);
$this->worker_id = 0;
$this->worker_pid = posix_getpid();
$this->set_process_title($this->title);
// 這裏賦值,worker進程也會克隆到
if ($this->log_show) {
log::$log_show = true;
}
if ($this->on_start) {
call_user_func($this->on_start, $this);
}
// worker進程從1開始,0被master進程所使用
for ($i = 1; $i <= $this->count; $i++) {
$this->fork_one_worker($i);
}
$this->monitor_workers();
}