Home >PHP Framework >Workerman >How to use MySQL for data storage in Workerman
How to use MySQL for data storage in Workerman
As a high-performance asynchronous PHP Socket framework, Workerman is widely used in the development of network communication servers. In many practical projects, we often need to use MySQL for data storage and management. Below we will introduce how to use MySQL for data storage in Workerman and provide specific code examples.
1. Install the MySQL extension
Before we begin, we need to ensure that the MySQL extension has been installed. The MySQL extension can be installed through the following command:
$ pecl install mysql
If the MySQL extension is already installed, you can skip this step.
2. Establish a MySQL connection
Before using MySQL for data storage, you first need to establish a connection with MySQL. In Workerman, we can establish a MySQL connection through the following code:
<?php require_once __DIR__ . '/Workerman/Autoloader.php'; use WorkermanWorker; use WorkermanMySQLConnection; $worker = new Worker(); $worker->onWorkerStart = function() { $GLOBALS['db'] = new Connection('host', 'username', 'password', 'database'); }; Worker::runAll();
In the above code, we first introduced the Autoloader of the Workerman framework and declared a Worker object. In the onWorkerStart callback function of the Worker object, we establish a MySQL connection using the specified host, username, password, and database name. Store the connection object in the global variable $GLOBALS['db']
for use in subsequent code.
3. Execute SQL query statements
After establishing the MySQL connection, we can use the MySQL connection object to execute SQL query statements. The following is a simple example:
<?php use WorkermanWorker; use WorkermanMySQLConnection; $worker = new Worker(); $worker->onWorkerStart = function() { $GLOBALS['db'] = new Connection('host', 'username', 'password', 'database'); }; $worker->onMessage = function($connection, $data) { $res = $GLOBALS['db']->query('SELECT * FROM users'); if (!$res) { $connection->send('查询失败'); } else { $connection->send(json_encode($res)); } }; Worker::runAll();
In the above code, we executed a query statement in the onMessage callback function of the Worker object and queried all the data in the table named users. If the query fails, "Query failed" is returned; otherwise, the query results are serialized using the json_encode function and sent to the client.
This is just a simple example. In actual application, we can execute various SQL statements according to specific needs, such as insert, update, delete and other operations.
4. Connection pool optimization
In high-concurrency network applications, connection pools are often used to optimize database connections. The Workerman framework provides support for MySQL connection pooling, which can effectively manage and reuse MySQL connections.
The following is a sample code using the connection pool:
<?php use WorkermanWorker; use WorkermanMySQLConnection; $worker = new Worker(); $worker->onWorkerStart = function() { $GLOBALS['db'] = new WorkermanMySQLPool('host', 'username', 'password', 'database'); }; $worker->onMessage = function($connection, $data) { $GLOBALS['db']->pop(function($db) use ($connection) { $res = $db->query('SELECT * FROM users'); if (!$res) { $connection->send('查询失败'); } else { $connection->send(json_encode($res)); } $db->push($db); }); }; Worker::runAll();
In the above code, we use the connection pool class WorkermanMySQLPool
provided by the Workerman framework to create a connection pool object. In the onMessage callback function, use the $GLOBALS['db']->pop
method to obtain a connection from the connection pool, and then perform the query operation. Finally, use the $db->push
method to return the connection to the connection pool for use by other requests.
5. Summary
Through this article, we learned how to use MySQL for data storage in Workerman. First, you need to install the MySQL extension through the pecl install mysql command, then establish a connection with MySQL and execute the SQL query statement. In the case of high concurrency, we can also use connection pools to optimize database connections. I hope this article can be helpful to you, and I wish you smooth data storage when using Workerman to develop network applications.
The above is the detailed content of How to use MySQL for data storage in Workerman. For more information, please follow other related articles on the PHP Chinese website!