2017年6月29日 星期四

刪除Linux上中文亂碼檔案/資料夾

1. 透過 ls -i 找到檔案/資料夾代表的編號
ls -i       //查看檔案代表的編號
2. 再用 find 去找這個編號的檔案後刪除
//刪除單一檔案
find -inum 檔案編號(數字) -delete 

//刪除整個資料夾
find -inum 檔案編號(數字) -exec rm -rf {} \; 

PHP的file_get_contents 逾時操作

在PHP中file_get_contents蠻常用到的,需要注意的地方大概就是在php.ini裡需要將allow_url_fopen = on,還有就是User Agent偽裝一下

ini_set('user_agent','Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0')

不過最近發現到如果呼叫的url過大,就有一定的機率回500錯誤  Orz...

解決方法:
GET:

  $opts = array(  
     'http'=>array(  
          'method'=>"GET",  
          'timeout'=>600,  
       )  
   );  
  $context = stream_context_create($opts);  
  file_get_contents($target_url, false, $context);

POST:

function Post($url, $post = null)  
{  
    $context = array();  
   
    if (is_array($post)) {  
        ksort($post);  
   
        $context['http'] = array (  
            'timeout'=>600,  
            'method' => 'POST',  
            'content' => http_build_query($post, '', '&'),  
         );  
    }  
   
    return file_get_contents($target_url, false, stream_context_create($context));  
}  
   
$data = array (  
    'name' => 'test',  
    'email' => 'test@gmail.com',  
    'submit' => 'submit',  
 );  
Post('http://www.example.com', $data);  

加上TimeOut時間就能避免了,不過就是等久了些使用者會不耐煩。在JQuery的非同步執行下~等久了有若干機會造成DB的Deadlock狀態(透過呼叫API同步資料再搭配系統操作...)。

PS. 建議使用curl或fsockopen來處理,file_get_contents用起來簡單但是其缺點也是挺無奈地,萬一主機商不給改php.ini 或是資料量大或運算/執行較久的頁面,那Debug起來不方便。



2017年6月28日 星期三

在IIS上套用htaccess設定

在Linux上給Apache很好用的.htaccess ~ 移植到Windows + IIS環境理論上應該可行吧,試出來後就備忘一下囉,免得過些日子又忘光了。

1. 首先開啟Microsoft Platform installer,用關鍵字url去篩選會看到Url Rewrite這產品~點選新增後慢慢下一步下一步安裝,安裝完成後重啟IIS。


2. IIS重啟完成後,若安裝成功就可以看到URL Rewrite這元件,勇敢地點下去吧。


3. 點選"匯入規則"後點選要匯入的.htaccess檔案,完成後會看到匯入的規則X...




後記: 請務必確認.htaccess內規則是正確的,不然Debug上會花費不少功夫,畢竟那是在LAMP環境下很好用的設計,移到WIN平台上可能支援性上也不能要求完美。




2017年6月12日 星期一

mariadb 大小寫敏感性的設定

登入 mariadb 後


show variables like 'lower%'

windows 預設是 1 不區分大小寫
unix 預設是 0 有區分大小寫

修改...
vim /etc/my.sql.d/server.cnf

在[mysqld]下新增
lower_case_table_names = 1

重啟mariadb 指令 service mysql restart  即可

缺點...若是既成的Database那麼若有Table Name使用到大小寫的就會讀不到,需要匯出Database整理成小寫後再匯回。