前言:
cli模式,就是命令行形式執(zhí)行php文件,不依賴nginx等服務(wù)。cli模式有幾個(gè)好處,1是不會過期,不管執(zhí)行多久都可以。2是簡單,不用考慮nginx等服務(wù)器的配置等。那么平時(shí)大家都用框架寫代碼。要讓你寫原生連接數(shù)據(jù)庫做點(diǎn)操作效率太低。下面就介紹下如何使用tp5在cli模式下執(zhí)行你寫的方法
簡單介紹
其實(shí)tp5手冊有介紹這個(gè)功能,但是不知道為什么只有一小段介紹。首先來看原生的寫法用cli模式來執(zhí)行 新建一個(gè)index.php文件
<?php
echo "hello world";
然后再用php命令去執(zhí)行這個(gè)文件
php index.php
就會得到輸出hello world。非常的簡單。那么用tp5來做cli同樣很簡單。
- 首先需要在一個(gè)沒有登錄驗(yàn)證的控制器下創(chuàng)建一個(gè)方法。我們都知道我們往往在控制器或基類控制器的構(gòu)造函數(shù)中寫登錄驗(yàn)證。所以我們需要cli時(shí),一定不能有登錄驗(yàn)證。一般來說會專門寫一個(gè)不需要登錄驗(yàn)證的控制器
- 在控制器里寫一個(gè)方法,這個(gè)方法就是你需要執(zhí)行的內(nèi)容。由于在crontab中,最高頻率也就是1分鐘1次。但因?yàn)閏li的特性。你可以在方法里寫死循環(huán)使用sleep來控制頻率,可以做到5秒一次 10秒一次。都是可以的。我就寫個(gè)簡單的
public function test()
{
echo '123'.PHP_EOL;
}
- 執(zhí)行這個(gè)方法。執(zhí)行規(guī)則實(shí)際上和url訪問的規(guī)則非常的類似。大家都知道框架有一個(gè)唯一入口index.php 雖然可以通過重寫來隱藏,但是實(shí)際上還是訪問的這個(gè)php文件,然后通過框架的機(jī)制引入和執(zhí)行控制器里的方法。tp5默認(rèn)使用PATHINFO的形式來訪問。其實(shí)cli也是這個(gè)套路,執(zhí)行index.php 跟上PATHINFO就可以了
比如:
php /你的項(xiàng)目地址/public/index.php index/index/test
其實(shí)就是php去執(zhí)行你項(xiàng)目的入口文件,空格后面其實(shí)就是你的 模塊/控制器/方法
那么有人可能會問了,那么開啟了強(qiáng)制路由的怎么辦?經(jīng)過我今天的試驗(yàn),強(qiáng)制路由同樣適用這個(gè)規(guī)則。//這么牛逼的功能不知道tp團(tuán)隊(duì)為什么不好好介紹下
php /你的項(xiàng)目地址/public/index.php test
空格后面就是你的路由地址。更為簡單清晰

執(zhí)行結(jié)果
最后還補(bǔ)充個(gè)小提示,經(jīng)過我測試,當(dāng)開啟路由模式去使用cli時(shí),請求方式規(guī)定為get或者any的時(shí)候可以使用。當(dāng)請求方式規(guī)定為post/put/delete時(shí),則會報(bào)錯(cuò)。大家要注意哦

請求方式不正確時(shí)報(bào)錯(cuò)
tp5的cli模式今天就介紹到這里。雖然簡單,卻很實(shí)用。歡迎交流,互相學(xué)習(xí)。感謝