茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    php實現(xiàn)讀取內(nèi)存順序號
    來源:易賢網(wǎng) 閱讀:784 次 日期:2015-04-03 10:18:06
    溫馨提示:易賢網(wǎng)小編為您整理了“php實現(xiàn)讀取內(nèi)存順序號”,方便廣大網(wǎng)友查閱!

    這篇文章主要介紹了php實現(xiàn)讀取內(nèi)存順序號,十分的簡單實用,需要的朋友可以參考下

    只是做記錄,osc本站應該有重復的

    semWrapper.class.php

    /*

    * 信號量(Semaphore)。

    * 這是一個包裝類,用于解決不同平臺下對“信號量”的不同實現(xiàn)方式。

    * 目前這個類只是象征性的,在 Windows 平臺下實際是空跑(并沒有真的實現(xiàn)互斥)。

    */

    class SemWrapper

    {

    private $hasSemSupport;

    private $sem;

    const SEM_KEY = 1;

    public function __construct()

    {

    $this->hasSemSupport = function_exists( 'sem_get' );

    if ( $this->hasSemSupport ) {

    $this->sem = sem_get( self::SEM_KEY );

    }

    }

    public function acquire() {

    if ( $this->hasSemSupport ) {

    return sem_acquire( $this->sem );

    }

    return true;

    }

    public function release() {

    if ( $this->hasSemSupport ) {

    return sem_release( $this->sem );

    }

    return true;

    }

    }

    SeqGenerator.class.php

    /*

    * 順序號發(fā)生器。

    */

    class SeqGenerator

    {

    const SHM_KEY = 1;

    /**

    * 對順序號發(fā)生器進行初始化。

    * 僅在服務器啟動后的第一次調(diào)用有效,此后再調(diào)用此方法沒有實際作用。

    * @param int $start 產(chǎn)生順序號的起始值。

    * @return boolean 返回 true 表示成功。

    */

    static public function init( $start = 1 )

    {

    // 通過信號量實現(xiàn)互斥,避免對共享內(nèi)存的訪問沖突

    $sw = new SemWrapper;

    if ( ! $sw->acquire() ) {

    return false;

    }

    // 打開共享內(nèi)存

    $shm_id = shmop_open( self::SHM_KEY, 'n', 0644, 4 );

    if ( empty($shm_id) ) {

    // 因使用了 'n' 模式,如果無法打開共享內(nèi)存,可以認為該共享內(nèi)存已經(jīng)創(chuàng)建,無需再次初始化

    $sw->release();

    return true;

    }

    // 在共享內(nèi)存中寫入初始值

    $size = shmop_write( $shm_id, pack( 'L', $start ), 0 );

    if ( $size != 4 ) {

    shmop_close( $shm_id );

    $sw->release();

    return false;

    }

    // 關閉共享內(nèi)存,釋放信號量

    shmop_close( $shm_id );

    $sw->release();

    return true;

    }

    /**

    * 產(chǎn)生下一個順序號。

    * @return int 產(chǎn)生的順序號

    */

    static public function next()

    {

    // 通過信號量實現(xiàn)互斥,避免對共享內(nèi)存的訪問沖突

    $sw = new SemWrapper;

    if ( ! $sw->acquire() ) {

    return 0;

    }

    // 打開共享內(nèi)存

    $shm_id = shmop_open( self::SHM_KEY, 'w', 0, 0 );

    if ( empty($shm_id) ) {

    $sw->release();

    return 0;

    }

    // 從共享內(nèi)存中讀出順序號

    $data = shmop_read( $shm_id, 0, 4 );

    if ( empty($data) ) {

    $sw->release();

    return 0;

    }

    $arr = unpack( 'L', $data );

    $seq = $arr[1];

    // 把下一個順序號寫入共享內(nèi)存

    $size = shmop_write( $shm_id, pack( 'L', $seq + 1 ), 0 );

    if ( $size != 4 ) {

    $sw->release();

    return 0;

    }

    // 關閉共享內(nèi)存,釋放信號量

    shmop_close( $shm_id );

    $sw->release();

    return $seq;

    }

    }

    page.php

    //使用方法

    $seq = SeqGenerator::next();

    var_dump($seq);

    以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。

    更多信息請查看IT技術專欄

    更多信息請查看網(wǎng)絡編程
    易賢網(wǎng)手機網(wǎng)站地址:php實現(xiàn)讀取內(nèi)存順序號

    2026上岸·考公考編培訓報班

    • 報班類型
    • 姓名
    • 手機號
    • 驗證碼
    關于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網(wǎng)