受保護的文章:Nginx 無法存取連結檔案(ln -s)

This post is password protected. To view it please enter your password below:

PHP 非同步執行

最近與同事討論兩個有趣的參數與函式(ignore_user_abort、fastcgi_finish_request),先留個紀錄

ignore_user_abort (預設 off)

  • 用途:當使用者連線中斷時不影響操作

可透過以下方式操作

  • PHP 碼: ignore_user_abort(true);
  • Nginx 設定:fastcgi_ignore_client_abort off;
  • php.ini:ignore_user_abort=0;

但因階層關係,nginx > PHP,但理論上因為 nginx 已經轉發給 PHP 因此應只要在 PHP 做設定便可生效(尚未測試),猜測其預設 off 原因為一般狀況下使用者斷線不應該再為其服務(例:行動網路瀏覽電商商品頁面),但某些狀況下使用者可能希望有個完整執行(例:交易過程),因此若在有這類多種行為複雜的系統,不應該在 config 中建立起全域設定,而應該透過程式來控制特定需要這類行為的功能。

fastcgi_finish_request

  • 用途:PHP 運作在 FastCGI 下可透過其提早回應瀏覽器
  • PHP 碼:fastcgi_finish_request();
  • 與過去使用 flush 更新進度方式有點像,但本質不一樣

結論

在某些運作需要長時間的操作比如上傳圖片進行其他處理、產生大報表等,可同時使用以上兩個功能,讓其可以快速回應前端又可以完整執行,但正確做法建議還是採用任務排程(例:GearmanResque/Resque-Scheduler等),以避免遇到例外狀況的處理不一。

Continue reading »

PHP 源碼解析蒐集

[OSX] Error: Cowardly refusing to ‘sudo brew update’

問題

執行 sudo brew update 時出現如下錯誤訊息

 
Error: Cowardly refusing to 'sudo brew update'
You can use brew with sudo, but only if the brew executable is owned by root.
However, this is both not recommended and completely unsupported so do so at
your own risk.

原因

brew 權限不正確

 
MBA:bin root# ls -la /usr/local/bin/brew*
-rwxr-xr-x  1 taien  admin  4913 Feb 11 20:46 brew
lrwxr-xr-x  1 taien admin    40 Oct 28  2015 brew-cask -> ../Cellar/brew-cask/0.58.0/bin/brew-cask

解決方法

 
sudo chown root:wheel /usr/local/bin/brew

VMWare 虛擬機複製網路無法正常(CentOS)

如題,VMWare 虛擬機複製網路無法正常網路開啟出現

eth0: unknown interface: No such device

處理方式

1. 查看是否存在新的設備

ls /sys/class/net

PS. 若有 eth1 lo 請繼續下面步驟

2. 把原本 /etc/sysconfig/network-scripts/ifcfg-eth0 改為 ifcfg-eth1

並將裡面的一些欄位修改為正確資訊:DEVICE、HWADDR、NAME

sshd 登入等待時間過久

ssh 登入等待過久,可能是因為 DNS 原因,如是可按以下方式改善

  1. vi /etc/ssh/sshd_config, 將 UseDNS yes 改成 no
  2. service ssh restart