在Linux上安裝php的拓展的思路大同小異,這次通過安裝php-mongodb拓展的實例拋磚引玉暗赶,讓大家接觸一下這方面的知識。
思路
- 安裝應(yīng)用
- 安裝php拓展
- 封裝操作類庫
- 使用案例
- 總結(jié)
服務(wù)器環(huán)境
- centos 7.2
- php 5.6
- Thinkphp 3.2
安裝應(yīng)用
安裝應(yīng)用肃叶,一般推薦去相對應(yīng)的官網(wǎng)下載最新的stable 版本蹂随。一方面官網(wǎng)上的源碼包一般都有對應(yīng)的md5值或者sha1值,這個可以保證了數(shù)據(jù)包的完整性和安全性因惭;另一方面官網(wǎng)上各種安裝教程都是最新有效的岳锁。
我們點(diǎn)擊進(jìn)入mongodb的下載頁面。這里插一句蹦魔,Linux安裝軟件有三種方式激率,一種是包管理工具安裝,另一種是軟件倉庫版姑,還有一種是源碼包安裝柱搜。如上圖就是需要下載mongodb的源碼包,通過源碼包編譯安裝的剥险。如上圖聪蘸,我們可以選擇自己對應(yīng)的操作系統(tǒng),然后選擇操作系統(tǒng)對應(yīng)的分支表制,最后下載對應(yīng)的源碼包健爬。
但是我們一般推薦使用YUM軟件倉庫安裝,軟件倉庫是為了進(jìn)一步降低軟件安裝難度和復(fù)雜度而設(shè)計的技術(shù)么介,為了解決軟件包之間的依賴關(guān)系娜遵。我們可以看到上圖中有Instructions for installing with yum,點(diǎn)擊進(jìn)去可看到
我們根據(jù)上圖中的指導(dǎo):
- 新建一個/etc/yum.repos.d/mongodb-org-3.6.repo文件壤短,填充內(nèi)容如下
[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
- 執(zhí)行一下命令
sudo yum install -y mongodb-org
- 安裝完畢后设拟,開啟mongodb服務(wù)慨仿,接著嘗試連接mongodb數(shù)據(jù)庫
sudo service mongod start
mongo --host 127.0.0.1:27017
- 如果一切順利,結(jié)果如下圖:
到此纳胧,我們完成了mongodb的安裝了镰吆。
安裝php拓展
接下來,就是需要安裝php-mongodb拓展,我們先下載解壓
git clone https://github.com/mongodb/mongo-php-driver.git
然后進(jìn)入拓展包目錄跑慕,接著源碼包編譯安裝這個拓展万皿。源碼包安裝linux軟件的命令原理可以參考這篇文章
cd mongo-php-driver
### 實踐證明,php5.6需要更新子模塊核行,下載完整的文件
git submodule update --init
phpize
./configure
make
sudo make install
####檢測拓展安裝是否的命令牢硅。如出現(xiàn)下圖,代表OK芝雪!
php -m | grep mongodb
至此减余,php-mongodb的安裝完畢。
封裝操作類庫
mongodb之前有了好幾次重大的更新绵脯,所以一些php框架集成的mongodb的類庫兼容不好佳励。mongodb官方也意識到這個問題,所以官方自己出了個類庫蛆挫,而且支持composer安裝赃承。只要將
"mongodb/mongodb": "1.0.2"
添加到項目的composer.json的require對象中就行,然后再項目目錄下執(zhí)行
composer update
等待更新完畢就OK悴侵,此時我們就可以在項目使用mongodb了瞧剖。
使用案例
我們參考mongodb官方的建議案例,并結(jié)合我們自己使用的TP框架可免,可以用來存儲OA的用戶行為抓于。
大概實現(xiàn)如下
安裝robo 3Tmongodb的GUI客戶端,建立一個test數(shù)據(jù)庫浇借,在test數(shù)據(jù)庫下建立一個名為test的collections捉撮,為test數(shù)據(jù)庫添加一個用戶,用戶名:root,密碼:root,詳細(xì)命令參考官網(wǎng)文檔妇垢。最后修改mongodb的配置文件/etc/mongod.conf巾遭,使它支持安全驗證
在Application/Common/Conf/tags.php中為action_begin這個標(biāo)志位添加一個行為
<?php
return array(
//本地沒有mongodb可以注釋掉下面這行
'action_begin'=>array('Home\\Behaviors\\LogAnyThingsBehavior'),
);
- 然后在相對應(yīng)位置創(chuàng)建一個Home/Behaviors/LogAnyThingsBehavior.class.php文件
<?php
namespace Home\Behaviors;
use Think\Behavior;
class LogAnyThingsBehavior extends Behavior{
/** 行為 : 記錄用戶行為
* @param mixed $param
*/
public function run(&$param){
//獲取行為信息
$data['user_id'] = session('user_uid_yz');
$data['username'] = session('user_yz');
$data['ip'] = $_SERVER['REMOTE_ADDR'];
$data['class'] = CONTROLLER_NAME;
$data['function'] = ACTION_NAME;
$data['create_time'] = date("Y-m-d H:i:s",time());
$mongo = (new \MongoDB\Client("mongodb://root:root@127.0.0.1/test"));
$collection = $mongo ->selectCollection("test","test");
$insertOneResult = $collection->insertOne($data);
}
}
?>
- 然后就可以登錄項目網(wǎng)站,點(diǎn)擊瀏覽下網(wǎng)頁闯估。就可以在robo 3T客戶端中看到日志數(shù)據(jù)了
總結(jié)
至此灼舍,我們的目標(biāo)基本完成了。php的其他拓展也大概是這個思路涨薪。希望對大家有幫助骑素。