2016年8月27日 星期六

太快也不好!!

幫朋友寫了個轉移blogger裡面照片的程式。程式的邏輯很簡單:
1、取出content有googleusercontent的文章的ID
2、取出圖片連結
3、下載圖片並放在對應的資料夾 (若無則建立)
4、新增資料庫裡面的圖片 (這樣才會出現在媒體庫),並加入資料庫 (parent)
5、更新原始POST中 img的來源

但是,實作上遇到很好笑的事。在步驟3時,我會先檢查資料夾是否存在,不在就建立。接著看資料夾裡面的檔案,先比對檔名再比對建立時間,找出最後一張圖,例如目前是05,下一張就是06。

結果啊,剛在測試時就遇到讓我很困擾的狀況了...因為網路和電腦太快,檔案下載下來的時間竟然是一樣的... ><。造成檔名無法如我預期的往下處理...

所以我就只好傻傻的用檔名排序,然後找出最後一筆了 (不想用ls來排,因為說不定哪一天會用在不是Linux的系統上)

排序的這一段是網路上找到的程式碼,紀念一下:
 $output = array();
 foreach( new RecursiveIteratorIterator(
     new RecursiveDirectoryIterator( $path, FilesystemIterator::SKIP_DOTS | FilesystemIterator::UNIX_PATHS ) ) as $value ) {
         if ( $value->isFile() ) {
             $output[] = array( $value->getMTime(), $value->getRealPath() );
         }
 }

 usort ( $output, function( $a, $b ) {
     return $a[0] > $b[0];
 });
 print_r($output);
 list($a,$b) = explode("$path/",end(end($output)));
 echo $b."\n";

沒有留言:

張貼留言