/** * go forward one by one * @param $_tagArr */ private function roundTagA(&$_tagArr) { if ($_tagArr == NULL) { return; } $_tagArrLength = count($_tagArr); for ($i = 0; $i < $_tagArrLength; $i++) { if (is_array($_tagArr[$i])) { $this->roundTagA($_tagArr[$i]); } else { if (stripos($_tagArr[$i], self::$_CapSite['domain_name']) === FALSE) { continue; } if (in_array($_tagArr[$i], self::$_overURL)) { continue; } self::$_overURL[] = $_tagArr[$i]; if (count(self::$_overURL) % self::$_CapSite['serialize_url_size'] == 0) { OperateFile::setText(self::$_Config['overURL'], serialize(self::$_overURL)); } do { $_tagA = $this->getCapInstance(Http::get($_tagArr[$i])); sleep(self::$_CapSite['preform_page_time'] * self::$_markTime); if ($this->_mark === TRUE) { self::$_markTime = self::$_CapSite['preform_page_time']; break; } self::$_markTime *= 2; } while (true); /* parse the main page and return next page */ $this->roundTagA($_tagA); } } }
/** * save image associating with specified image source * @param $_image_src * @param $_file_name */ private function grabImage($_image_src, $_file_name = NULL) { $_final_name = NULL; $_ext = NULL; if ($_image_src == NULL) { return NULL; } $_final_name = strtolower(end(explode('/', $_image_src))); if ($_file_name === NULL) { /* 'Img'.date( "YmdHis" ).'.'.$_ext */ $_file_name = $_final_name; } if (in_array($_file_name, self::$_accompImg)) { return NULL; } $_ext = strtolower(end(explode('.', $_image_src))); if (!in_array($_ext, self::$_imgAccept)) { return FALSE; } if (!is_dir(self::$_savePath)) { mkdir(self::$_savePath, 0777); } if (!is_readable(self::$_savePath)) { chmod(self::$_savePath, 0777); } $_Length = count(self::$_accompImg); $_prefix = isset(self::$_CapSite['partition_name']) ? self::$_CapSite['partition_name'] : ''; $_dir = self::$_savePath . $_prefix . intval($_Length / self::$_CapSite['dir_file_limit']) . DIRECTORY_SEPARATOR; if (file_exists($_dir) === FALSE) { mkdir($_dir, 0777); } $_file_path = $_dir . $_file_name; $this->_mark = FALSE; ob_start(); readfile($_image_src); $_img = ob_get_contents(); ob_end_clean(); $_size = strlen($_img); /** * equals: * $_fp = fopen( $_file_path, 'wb' ); * $_return_size = fwrite( $_fp, $_img, $_size ); * fclose( $_fp ); */ $_return_size = OperateFile::setText($_file_path, $_img); if ($_return_size === $_size) { $this->_mark = TRUE; } self::$_accompImg[] = $_file_name; if (count(self::$_accompImg) % self::$_CapSite['serialize_img_size'] == 0) { OperateFile::setText(self::$_Config['accompImg'], serialize(self::$_accompImg)); } return $_file_path; }