国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

Workerman/MySQL

注意
此庫(kù)不再維護(hù),推薦使用illuminate/databasetopthink/think-orm

說(shuō)明

常駐內(nèi)存的程序在使用mysql時(shí)經(jīng)常會(huì)遇到mysql gone away的錯(cuò)誤,這個(gè)是由于程序與mysql的連接長(zhǎng)時(shí)間沒(méi)有通訊,連接被mysql服務(wù)端踢掉導(dǎo)致。本數(shù)據(jù)庫(kù)類可以解決這個(gè)問(wèn)題,當(dāng)發(fā)生mysql gone away錯(cuò)誤時(shí),會(huì)自動(dòng)重試一次。

依賴的擴(kuò)展

該mysql類依賴pdopdo_mysql兩個(gè)擴(kuò)展,缺少擴(kuò)展會(huì)報(bào)Undefined class constant 'MYSQL_ATTR_INIT_COMMAND' in ....錯(cuò)誤。

命令行運(yùn)行php -m會(huì)列出所有php cli已安裝的擴(kuò)展,如果沒(méi)有pdo 或者 pdo_mysql,請(qǐng)自行安裝。

centos系統(tǒng)

PHP5.x

yum install php-pdo
yum install php-mysql

PHP7.x

yum install php70w-pdo_dblib.x86_64
yum install php70w-mysqlnd.x86_64

如果找不到包名,請(qǐng)嘗試用yum search php mysql查找

ubuntu/debian系統(tǒng)

PHP5.x

apt-get install php5-mysql

PHP7.x

apt-get install php7.0-mysql

如果找不到包名,請(qǐng)嘗試用apt-cache search php mysql查找

以上方法無(wú)法安裝?

如果以上方法無(wú)法安裝,請(qǐng)參考workerman手冊(cè)-附錄-擴(kuò)展安裝-方法三源碼編譯安裝。

安裝 Workerman/MySQL

方法1:

可以通過(guò)composer安裝,命令行運(yùn)行以下命令(composer源在國(guó)外,安裝過(guò)程可能會(huì)非常慢)。

composer require workerman/mysql

上面命令成功后會(huì)生成vendor目錄,然后在項(xiàng)目中引入vendor下的autoload.php。

require_once __DIR__ . '/vendor/autoload.php';

方法2:

下載源碼,解壓后的目錄放到自己項(xiàng)目中(位置任意),直接require源文件。

require_once '/your/path/of/mysql-master/src/Connection.php';

注意

強(qiáng)烈建議在onWorkerStart回調(diào)中初始化數(shù)據(jù)庫(kù)連接,避免在Worker::runAll();運(yùn)行前就初始化連接,在Worker::runAll();運(yùn)行前初始化的連接屬于主進(jìn)程,子進(jìn)程會(huì)繼承這個(gè)連接,主進(jìn)程和子進(jìn)程共用相同的數(shù)據(jù)庫(kù)連接會(huì)導(dǎo)致錯(cuò)誤。

示例

use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';

$worker = new Worker('websocket://0.0.0.0:8484');
$worker->onWorkerStart = function($worker)
{
    // 將db實(shí)例存儲(chǔ)在全局變量中(也可以存儲(chǔ)在某類的靜態(tài)成員中)
    global $db;
    $db = new \Workerman\MySQL\Connection('host', 'port', 'user', 'password', 'db_name');
};
$worker->onMessage = function(TcpConnection $connection, $data)
{
    // 通過(guò)全局變量獲得db實(shí)例
    global $db;
    // 執(zhí)行SQL
    $all_tables = $db->query('show tables');
    $connection->send(json_encode($all_tables));
};
// 運(yùn)行worker
Worker::runAll();

具體MySQL/Connection用法

// 初始化db連接
$db = new \Workerman\MySQL\Connection('host', 'port', 'user', 'password', 'db_name');

// 獲取所有數(shù)據(jù)
$db->select('ID,Sex')->from('Persons')->where('sex= :sex AND ID = :id')->bindValues(array('sex'=>'M', 'id' => 1))->query();
//等價(jià)于
$db->select('ID,Sex')->from('Persons')->where("sex= 'M' AND ID = 1")->query();
//等價(jià)于
$db->query("SELECT ID,Sex FROM `Persons` WHERE sex='M' AND ID = 1");

// 獲取一行數(shù)據(jù)
$db->select('ID,Sex')->from('Persons')->where('sex= :sex')->bindValues(array('sex'=>'M'))->row();
//等價(jià)于
$db->select('ID,Sex')->from('Persons')->where("sex= 'M' ")->row();
//等價(jià)于
$db->row("SELECT ID,Sex FROM `Persons` WHERE sex='M'");

// 獲取一列數(shù)據(jù)
$db->select('ID')->from('Persons')->where('sex= :sex')->bindValues(array('sex'=>'M'))->column();
//等價(jià)于
$db->select('ID')->from('Persons')->where("sex= 'F' ")->column();
//等價(jià)于
$db->column("SELECT `ID` FROM `Persons` WHERE sex='M'");

// 獲取單個(gè)值
$db->select('ID')->from('Persons')->where('sex= :sex')->bindValues(array('sex'=>'M'))->single();
//等價(jià)于
$db->select('ID')->from('Persons')->where("sex= 'F' ")->single();
//等價(jià)于
$db->single("SELECT ID FROM `Persons` WHERE sex='M'");

// 復(fù)雜查詢
$db->select('*')->from('table1')->innerJoin('table2','table1.uid = table2.uid')->where('age > :age')->groupBy(array('aid'))->having('foo="foo"')->orderByASC/*orderByDESC*/(array('did'))
->limit(10)->offset(20)->bindValues(array('age' => 13));
// 等價(jià)于
$db->query('SELECT * FROM `table1` INNER JOIN `table2` ON `table1`.`uid` = `table2`.`uid`
WHERE age > 13 GROUP BY aid HAVING foo="foo" ORDER BY did LIMIT 10 OFFSET 20');

// 插入
$insert_id = $db->insert('Persons')->cols(array(
    'Firstname'=>'abc',
    'Lastname'=>'efg',
    'Sex'=>'M',
    'Age'=>13))->query();
等價(jià)于
$insert_id = $db->query("INSERT INTO `Persons` ( `Firstname`,`Lastname`,`Sex`,`Age`)
VALUES ( 'abc', 'efg', 'M', 13)");

// 更新
$row_count = $db->update('Persons')->cols(array('sex'))->where('ID=1')
->bindValue('sex', 'F')->query();
// 等價(jià)于
$row_count = $db->update('Persons')->cols(array('sex'=>'F'))->where('ID=1')->query();
// 等價(jià)于
$row_count = $db->query("UPDATE `Persons` SET `sex` = 'F' WHERE ID=1");

// 刪除
$row_count = $db->delete('Persons')->where('ID=9')->query();
// 等價(jià)于
$row_count = $db->query("DELETE FROM `Persons` WHERE ID=9");

// 事務(wù)
$db->beginTrans();
....
$db->commitTrans(); // or $db->rollBackTrans();
編輯于2024-07-25 22:10:06 完善本頁(yè) +發(fā)起討論
贊助商