PHP中FTP相關(guān)函數(shù)小結(jié)
本文實(shí)例講述了PHP中FTP相關(guān)函數(shù)。分享給大家供大家參考,具體如下:
<?php set_time_limit(0); //轉(zhuǎn)存本地地址 define( 'STORE_PATH', dirname(__FILE__) . '/../../../../temp_data/test/' ); define('LIST_PATH', STORE_PATH . 'list/'); define('CHAPTER_PATH', LIST_PATH . 'chapter/'); define('DETAIL_PATH', LIST_PATH . 'detail/'); createFolder(STORE_PATH); createFolder(LIST_PATH); createFolder(CHAPTER_PATH); createFolder(DETAIL_PATH); $ftp_server = "ip"; $ftp_user = "anonymous"; $ftp_pass = "anonymous"; $conn_id = ftp_connect ( $ftp_server ) or die ( "Couldn't connect to $ftp_server" ); if (@ftp_login ( $conn_id, $ftp_user, $ftp_pass )) { echo "Connected as $ftp_user@$ftp_server\n"; } else { echo "Couldn't connect as $ftp_user\n"; } ftp_pasv($conn_id, true); /** * 創(chuàng)建文件并寫入內(nèi)容 * * @param string $path path/ * @param string $fileName filename * @param string $data content * * @return string 返回路徑 */ function createFile ($path, $fileName, $data) { if (empty($data)) { return false; } file_put_contents($path . $fileName, $data); return $path . $fileName; } /** * 創(chuàng)建目錄 * * @param string $path path * * @return no */ function createFolder ($path) { if (! file_exists($path)) { createFolder(dirname($path)); if (mkdir($path, 0777)) { echo "\n dir not find ,make dir " . dirname($path) . " is ok!"; } else { echo "\n dir not find ,make dir " . dirname($path) . " is fail!"; } } } /** * 抓取電子書籍的類別 * * @param string $xmlUrl xml地址 * @param string $saveFileName 文件名稱 * * @return string 返回路徑 */ function getClassXml ($conn_id,$categoryDir, $saveFileName = 'category.xml') { //獲取頂級(jí)欄目 $clist = getDirListFormFtp($conn_id, $categoryDir); $itemTPL = '<Item><ID>%s</ID><Name>%s</Name></Item>'; $items=''; foreach ($clist as $key=>$value){ $items .=sprintf($itemTPL,$value['name'],$value['detail']); } $bodyTPL='<Tofo><Class>%s</Class></Tofo>'; $data = sprintf($bodyTPL,$items); echo "\n".createFile(STORE_PATH, $saveFileName, $data); } set_time_limit(0); $start_time = time(); $bookCache=array(); $categoryDir = "\\tingshu\\web"; getClassXml($conn_id,$categoryDir); //獲取頂級(jí)欄目 $clist = getDirListFormFtp($conn_id, $categoryDir); //獲取二級(jí)欄目分類 foreach ($clist as $key=>$value){ $_secondCateoryDir = $categoryDir.'\\'.$value['name']; $_secondCateorylist = getDirListFormFtp($conn_id, $_secondCateoryDir); $listData=''; $listTPL='<Tofo><Class><ID>%s</ID><Name>%s</Name><Books>%s</Books></Class></Tofo>'; $items ='<Item><ID>%s</ID><Name>%s</Name></Item>'; $listItemString=''; //獲取詳細(xì)書籍章節(jié)列表 foreach ($_secondCateorylist as $key=>$book){ $listItemString.=sprintf($items,$book['name'], $book['detail']); $_bookListDir = $_secondCateoryDir.'\\'.$book['name']; $chapters = getBook($conn_id,$_bookListDir); //生產(chǎn)book章節(jié)html getBookofChapter ($book,$chapters); //緩存bookid和章節(jié)信息 $bookCache[$book['name']] = array('category'=>$value['name'],'chapters'=>$chapters); } //生成二級(jí)欄目列表頁 $listData = sprintf($listTPL, $value['name'], $value['detail'],$listItemString); $list_save_path = $value['name'] . '.xml'; echo "\n".createFile(LIST_PATH, $list_save_path, $listData); } $arrString = "<?php \n \$bookCache=".var_export($bookCache, true).";\n?>"; echo "\n建立緩存文件:".createFile(STORE_PATH, 'bookcache.php', $arrString); /** * 抓取書籍章節(jié)信息 * * @param array $bookIds 書籍章節(jié)信息 * * @return boolean 返回是否抓取成功 */ function getBookofChapter ($bookinfo,$chapters) { if (! is_array($chapters)) { return false; } $bookData = ''; $bookTPL = '<Tofo><Books><ID>%s</ID><Name>%s</Name><Volumes>%s</Volumes></Books></Tofo>'; $bookItemTPL='<Item><ID>%s</ID><Name>%s</Name></Item>'; //<Play>%s</Play> //<Download>%s</Download> //,$item['downurl'],$item['downurl'] $chapterString=''; foreach ($chapters as $key=>$item){ $chapterString.=sprintf($bookItemTPL,$item['name'],$item['detail']); } //生成二級(jí)欄目列表頁 $bookData = sprintf($bookTPL, $bookinfo['name'], $bookinfo['detail'],$chapterString); $book_chapter_save_path = $bookinfo['name'] . '.xml'; if (! empty($bookData)) { echo "\n".createFile(CHAPTER_PATH, $book_chapter_save_path, $bookData); } return true; } function getBook($conn_id,$_bookListDir){ $chapter=array(); $buff = ftp_nlist ( $conn_id, $_bookListDir ); if(is_array($buff)){ $resourceArray = array(); foreach ($buff as $key=>$value){ if(strstr( $value, '.txt' )){ }else{ $resourcesName = str_replace($_bookListDir.'\\', "", $value); $temp = preg_split ( '/\./',$resourcesName); $resourceArray[trim($temp[0])]=$resourcesName; } } foreach ($buff as $key=>$value){ if(strstr( $value, '.txt' )){ $name = trim(str_replace(".txt","",str_replace($_bookListDir.'\\', "", $value))); $chapter[$name] = array ( 'name' => $name, 'detail' => getFileContentsFormFtp ( $conn_id, $value ), 'downurl' =>$resourceArray[$name] ); } } } ksort($chapter , SORT_NUMERIC); echo "\n"; var_dump('chapter index :'.implode(array_keys ($chapter), ',')); echo "\n"; return $chapter; } function getDirListFormFtp($conn_id, $categoryDir) { $categoryArray = array (); $dirs = getDirNameFormFtp ( $conn_id, $categoryDir ); //獲取分類描述 foreach ( $dirs as $key => $value ) { $path = $categoryDir . '\\' . $value . '.txt'; $categoryArray [] = array ('name' => $value, 'detail' => getFileContentsFormFtp ( $conn_id, $path ) ); } return $categoryArray; } function getFileContentsFormFtp($conn_id, $server_file) { $_tempFileName = STORE_PATH.'temp.tmp'; $content = ''; try { if (ftp_get ( $conn_id, $_tempFileName, $server_file, FTP_ASCII )) { $content = file_get_contents ( $_tempFileName ); } } catch (Exception $e) { var_dump('error timeout:-----'); global $ftp_server; $conn_id = ftp_connect ( $ftp_server ); if (@ftp_login ( $conn_id, $ftp_user, $ftp_pass )) { echo "Connected as $ftp_user@$ftp_server\n"; } else { echo "Couldn't connect as $ftp_user\n"; } ftp_pasv($conn_id, true); if (ftp_get ( $conn_id, $_tempFileName, $server_file, FTP_ASCII )) { $content = file_get_contents ( $_tempFileName ); } } $content = iconv ( "GBK", "UTF-8//IGNORE", trim($content) ); echo "\n"; var_dump('file name :'.$server_file.';content:'.$content); return $content; } function getDirNameFormFtp($conn_id, $dirString) { $buff = ftp_rawlist ( $conn_id, $dirString ); $dirs = array_filter ( $buff, "dirfilter" ); foreach ( $dirs as $key => $value ) { $temp = preg_split ( '/<DIR>/', $value ); $dirs [$key] = trim ( $temp [1] ); } asort($dirs , SORT_NUMERIC); return $dirs; } function dirfilter($var) { return (strstr ( $var, '<DIR>' )); } ftp_close ( $conn_id );
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php文件操作總結(jié)》、《PHP編碼與轉(zhuǎn)碼操作技巧匯總》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《PHP數(shù)學(xué)運(yùn)算技巧總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計(jì)算法總結(jié)》、《php正則表達(dá)式用法總結(jié)》、及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
- php中的路徑問題與set_include_path使用介紹
- PHP include_path設(shè)置技巧分享
- PHP中spl_autoload_register()函數(shù)用法實(shí)例詳解
- 全面解析PHP操作Memcache基本函數(shù)
- php的debug相關(guān)函數(shù)用法示例
- php中array_column函數(shù)簡(jiǎn)單實(shí)現(xiàn)方法
- php自定義函數(shù)實(shí)現(xiàn)JS的escape的方法示例
- PHP中Array相關(guān)函數(shù)簡(jiǎn)介
- PHP與Java對(duì)比學(xué)習(xí)日期時(shí)間函數(shù)
- 淺談PHP eval()函數(shù)定義和用法
- PHP 在數(shù)組中搜索給定的簡(jiǎn)單實(shí)例 array_search 函數(shù)
- 淺談PHP檢查數(shù)組中是否存在某個(gè)值 in_array 函數(shù)
- PHP中set_include_path()函數(shù)相關(guān)用法分析
相關(guān)文章
php使用mysqli和pdo擴(kuò)展,測(cè)試對(duì)比連接mysql數(shù)據(jù)庫的效率完整示例
這篇文章主要介紹了php使用mysqli和pdo擴(kuò)展,測(cè)試對(duì)比連接mysql數(shù)據(jù)庫的效率,結(jié)合完整實(shí)例形式對(duì)比分析了php分別使用mysqli和pdo擴(kuò)展連接mysql數(shù)據(jù)庫的執(zhí)行時(shí)間,需要的朋友可以參考下2019-05-05php+Ajax無刷新驗(yàn)證用戶名操作實(shí)例詳解
這篇文章主要介紹了php+Ajax無刷新驗(yàn)證用戶名操作,簡(jiǎn)單介紹了ajax的原理并結(jié)合實(shí)例形式分析了php結(jié)合ajax無刷新驗(yàn)證用戶名相關(guān)操作技巧,需要的朋友可以參考下2019-03-03php使用pthreads v3多線程實(shí)現(xiàn)抓取新浪新聞信息操作示例
這篇文章主要介紹了php使用pthreads v3多線程實(shí)現(xiàn)抓取新浪新聞信息操作,結(jié)合實(shí)例形式分析了php使用pthreads多線程抓取新浪新聞信息具體實(shí)現(xiàn)步驟與操作技巧,需要的朋友可以參考下2020-02-02