91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP中怎么使用PDO和消息隊列

發布時間:2021-06-12 18:33:19 來源:億速云 閱讀:119 作者:Leah 欄目:開發技術

這期內容當中小編將會給大家帶來有關PHP中怎么使用PDO和消息隊列,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

配置文件mysql.ini的內容:

[database]
driver = mysql
host = 127.0.0.1
port = 3306
dbname = mysql
username = root
password = 1234
[options]
PDO::MYSQL_ATTR_INIT_COMMAND = set names utf8

數據表文件queue.sql的內容:

-- 消息隊列測試
-- 商品表
create table goods(
id int unsigned primary key auto_increment,
goodsname varchar(40) not null comment '商品名',
price decimal(9,2) not null comment '價格',
category_id tinyint unsigned not null comment '商品類別id',
sort tinyint comment '商品排序',
description varchar(255) comment '商品描述',
remark varchar(255) comment '備注'
)engine InnoDB default charset=utf8;
insert into goods values(default,'iPhone5s',5999,1,1,'美國入口貴重電子產品','請多多銷售'),(default,'宏基手提電腦1',4888,3,1,'價格劃算好電腦',null),(default,'f-30絨衣',200,2,1,'以純白色厚皮羽絨服',null),(default,'n-100鞋子',300,4,1,'Nick品牌',null);

下面是簡單的消息隊列實現PDO商品入庫的代碼:

鄭重提醒:請認真看我的注釋,請認真看我的注釋,請認真看我的注釋。重要的信息要說三遍,呵呵!

<?php
namespace Home;
header('content-type:text/html;charset=utf-8;');
//引入PDO類
use \PDO;
use \PDOStatement;
use \PDOException;
/*簡單消息隊列*/
class Queue{
  //容器可以是私有,最好是公有
  static public $container=array();
  //把PDO對象存放到屬性中是為了跨方法使用
  static private $pdo;
  //構造函數實現初始化PDO連接數據庫
  public function __construct($file = './mysql.ini'){//mysql數據庫的配置文件,./mysql.ini與這個類是同一個目錄
    //parse_ini_file函數作用,解析并獲取ini文件的參數,加true是二維數組
    $dbini    = parse_ini_file($file,true);
    $driver    = $dbini['database']['driver'];
    //這里的數據庫是mysql的總數據庫
    $dbname    = $dbini['database']['dbname'];
    $host    = $dbini['database']['host'];
    $port    = $dbini['database']['port'];
    //構造PDO連接數據庫的第一個參數,這個參數這么設置純屬是PDO類的語法,不懂的可以百度一下,這里就不做詳解了
    $dsn = $driver.':'.'dbname='.$dbname.';host='.$host.';port='.$port;
    //其他連接數據庫參數
    $username  = $dbini['database']['username'];
    $password  = $dbini['database']['password'];
    $options  = $dbini['options'];//初始化設置PDO選項
    try{
      self::$pdo = new PDO($dsn,$username,$password,$options);
      //設置PDO屬性。拋出錯誤報告
      self::$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
      try{
        //選擇商品數據表所在的數據庫
        self::$pdo->exec('use queue');
      }catch(PDOException $e){
        echo $e->getMessage();
      }
    }catch(PDOException $e){
      echo $e->getMessage();
    }
  }
  /*
  *入列
  *$data數組
  *成功返回1,失敗返回false,或者null
  */
  public function _unshift($data =array()){
    if(!is_array($data) || empty($data)){return false;}
    $sql = 'default';
    foreach($data as $k=>$v){
      $sql .= ',"'.$v.'"';
    }
    //把$data轉為sql語句,添加到隊列容器contain中
    $sql = 'insert into goods values('.$sql.')';
    return @array_unshift(self::$container,$sql);
  }
  /*
  *出列
  *成功返回最后插入的數據id
  *失敗返回失敗信息
  */
  private static function _pop(){
    try{//獲取尾部的sql語句,出列
      $sql = array_pop(self::$container);
      self::$pdo->exec($sql);
      //把剩余的容器值賦給中間變量
      $middle = self::$container;
      //判斷中間變量是否為空,不為空則繼續獲取容器尾部的數據,繼續出列
      while($middle){
        $sql = array_pop($middle);
        self::$pdo->exec($sql);
        //把數據再轉給容器,也就是轉給while循環外面的$middle,這樣才能實現循環,讓容器里面的數據全部出列,插入到數據庫中
        self::$container = $middle;
      }
      //返回的是,最后插入的id,失敗是null
      return self::$pdo->lastInsertId();
      }catch(PDOException $e){
        return $e->getMessage();
      }
  }
  //析構函數,對象回收時調用,通過它實現自動讓容器數據入庫
  public function __destruct(){
    //當對象被回收時,判斷容器是否存在消息,假如存在,則調用_pop方法,把消息出列
    if(self::$container){
      self::_pop();
    }
  }
}

下面是同一級目錄下調用這個類的文件的內容,當然,你也可以在上面那個queue類的下面調用_unshift方法實現消息隊列的操作

<?php
include './queue.php';
use Home\Queue;//引入命名空間的Queue類
$ob = new Queue;
//消息入列
$ob->_unshift(array('goodsname'=>'vivo手機8888','price'=>1120,'category_id'=>1,'sort'=>1,'description'=>'vivo品牌','remark'=>'好用'));
$ob->_unshift(array('goodsname'=>'小米手機888','price'=>1998,'category_id'=>1,'sort'=>1,'description'=>'小米品牌手機','remark'=>'國產好貨'));
//之所以打印出來,完成是為了看看效果,至于,有沒有實現商品入庫,你得去看看你的數據庫了,呵呵
var_dump(Queue::$container);

上述就是小編為大家分享的PHP中怎么使用PDO和消息隊列了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

丽水市| 含山县| 佛教| 广水市| 广宁县| 庆云县| 修水县| 黄山市| 黎城县| 墨江| 聊城市| 新安县| 德钦县| 辉县市| 保德县| 安化县| 伊吾县| 高尔夫| 响水县| 贡觉县| 林芝县| 台南市| 图木舒克市| 房产| 页游| 四子王旗| 保康县| 芜湖市| 扎鲁特旗| 乌拉特前旗| 怀集县| 顺昌县| 延寿县| 侯马市| 蓝田县| 广东省| 邳州市| 阿勒泰市| 渝北区| 乌海市| 湘阴县|