abstract:PHP 同樣可以 cli 模式運(yùn)行,同樣也有很多庫(kù)和擴(kuò)展,Web 開發(fā)不在話下,結(jié)合 gtk 等庫(kù)也可以開發(fā)桌面應(yīng)用程序,為什么沒有取代 Python 呢,他們語(yǔ)法同樣追求的是簡(jiǎn)單和快速上手,用開發(fā)效率換運(yùn)行效率,很多地方都很相似,而且現(xiàn)在各種培訓(xùn)機(jī)構(gòu)教 PHP 的也比 Python 要多,總感覺 PHP 使用人群也比 Python 多很多?我以前也試圖用php來(lái)解決一切問(wèn)題,比如寫daemon、
PHP 同樣可以 cli 模式運(yùn)行,同樣也有很多庫(kù)和擴(kuò)展,Web 開發(fā)不在話下,結(jié)合 gtk 等庫(kù)也可以開發(fā)桌面應(yīng)用程序,為什么沒有取代 Python 呢,他們語(yǔ)法同樣追求的是簡(jiǎn)單和快速上手,用開發(fā)效率換運(yùn)行效率,很多地方都很相似,而且現(xiàn)在各種培訓(xùn)機(jī)構(gòu)教 PHP 的也比 Python 要多,總感覺 PHP 使用人群也比 Python 多很多?
我以前也試圖用php來(lái)解決一切問(wèn)題,比如寫daemon、打包桌面軟件、寫cli工具等等,后來(lái)證明都是徒勞的,php根本不適合做這些,不是不能做,都是圖靈等價(jià)語(yǔ)言,但其他語(yǔ)言可以做的更好。
用php寫daemon,很容易碰到CPU會(huì)飆到100%的情況,后面我也碰到有人用php寫的daemon也飆到100%,還把自己嚇一跳的人。可能引發(fā)的原因是未加超時(shí)設(shè)置(stream_set_timeout)、未及時(shí)銷毀不斷膨脹的變量、每次打開新數(shù)據(jù)庫(kù)連接而不關(guān)閉等等引起的。
后來(lái)我再也沒有用php來(lái)寫daemon,因?yàn)閜hp的腳本特性就是每次請(qǐng)求完成后自動(dòng)釋放所有資源,所以寫的時(shí)候不會(huì)去考慮資源釋放、超時(shí)等問(wèn)題,習(xí)慣了這樣的方式,根本不能用來(lái)寫daemon,也不適合來(lái)寫桌面軟件,嚴(yán)格來(lái)說(shuō)這不是php本身的問(wèn)題,但php把你慣壞了,濫用資源而不釋放。
另外糾結(jié)一下 php 是有丑陋的shell的,php -a ,只不過(guò)每次都要 echo 一下才能出來(lái),也能直接運(yùn)行php代碼,比如:php -r 'echo time(); ',-r 表示run,代碼部分無(wú)需加入<?php。