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

關(guān)于workerman全局變量的使用

dreamboycx

我想使用workerman做與數(shù)據(jù)庫的長連接,所以我設(shè)置了全局變量$DataBaseConn,當(dāng)workerman進(jìn)程啟動時(shí),連接數(shù)據(jù)庫,$DataBaseConn作為連接標(biāo)識全局使用,如下所示:

$http_worker = new Worker("http://0.0.0.0:80");

$http_worker->count = 1;
$DataBaseConn = null;

$http_worker->onWorkerStart = function($http_worker){
    global $DataBaseConn;
    $database = 'LOTINGO';
    $user = 'db2inst1';
    $password = 'db2inst1';
    $hostname = '192.168.1.129';
    $port = 50000;
    $dsn_db2 = "DATABASE=" . $database . ";HOSTNAME=" . $hostname . ";PORT=" . $port. ";PROTOCOL=TCPIP;UID=" . $user . ";PWD=" . $password . ";";
    $DataBaseConn = db2_connect($dsn_db2, '', '');
};

那么我在onMessage回調(diào)里可以使用該變量查詢數(shù)據(jù)

$http_worker->onMessage = function($connection, $data)
{
    global $DataBaseConn;
    $sql = "select count(*) from table";
    $query = db2_exec($DataBaseConn,$sql);
    while ($res = db2_fetch_array($query)) {
      $result[] = $res;
    }
    $list = var_export($result,true);
    $connection->send($list);
};

那么該全局變量是否在workerman的任何地方使用?

然后我又啟動了webserver

$webserver = new WebServer('http://0.0.0.0:81');
$webserver->addRoot('localhost', __DIR__ . '/web');

我在web目錄下使用該全局變量為何打印為空呢?webserver不是基于workerman的嗎?是不是在web下的php文件無法使用呢?
web/index.php里:

global $DataBaseConn;
var_dump($DataBaseConn);

顯示為空。。。。

11003 1 0
1個(gè)回答

walkor 打賞

你貼的代碼中$http_worker->onWorkerStart 是http_worker進(jìn)程啟動時(shí)的回調(diào),這里初始化的全局?jǐn)?shù)據(jù)庫連接只屬于http_worker進(jìn)程,其它進(jìn)程例如webserver進(jìn)程無法使用這個(gè)數(shù)據(jù)庫連接。

你可以在$webserver->onWorkerStart中初始化一個(gè)屬于$webserver進(jìn)程自己的數(shù)據(jù)庫連接。

  • dreamboycx 2016-03-10

    明白了,它們起的是不同的進(jìn)程,進(jìn)程間的全局變量不能共享,系統(tǒng)中除了它們這些進(jìn)程之外,還有一個(gè)進(jìn)程是主進(jìn)程嗎?是起調(diào)度作用嗎?

  • walkor 2016-03-10

    進(jìn)程間關(guān)系可以去看手冊原理部分

  • oshell 2019-04-03

    在$webserver->onWorkerStart中初始化一個(gè)屬于$webserver進(jìn)程

    請問這個(gè)怎么創(chuàng)建....

年代過于久遠(yuǎn),無法發(fā)表回答
??