Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lanlin/codeigniter-swoole
Swoole Adapter For Codeigniter Framework
https://github.com/lanlin/codeigniter-swoole
cli-command codeigniter-swoole php-long-run php-swoole php-task
Last synced: about 2 months ago
JSON representation
Swoole Adapter For Codeigniter Framework
- Host: GitHub
- URL: https://github.com/lanlin/codeigniter-swoole
- Owner: lanlin
- License: mit
- Created: 2015-10-09T01:57:15.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2019-07-26T09:08:30.000Z (over 5 years ago)
- Last Synced: 2024-04-23T20:53:56.095Z (8 months ago)
- Topics: cli-command, codeigniter-swoole, php-long-run, php-swoole, php-task
- Language: PHP
- Homepage: https://github.com/lanlin/codeigniter-swoole
- Size: 78.1 KB
- Stars: 37
- Watchers: 5
- Forks: 10
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## Codeigniter Swoole Adapter
You want long-run task? timers? FPM to CLI? Code reusing in both FPM & CLI mode?
"It's so easy!"
This adapter would make it so easy to using swoole within Codeigniter framework.
With this adapter, you can start a task(CLI) any where(FPM) you want from your code.
That's means you can start a CLI task from a FPM process.
## Install
```shell
composer require lanlin/codeigniter-swoole
```## How to
1. first, of course you must install `codeigniter-swoole` to your codeigniter project.
2. (this step is option) copy these two config files `swoole.php` and `timers.php` from `src/Helper` to your `application/config` folder.
3. start swoole server `php index.php swoole/server/start`
4. you can use `\CiSwoole\Core\Client::send($data)` to start a task now!
5. there's no step 5.## What is a task?
A task is just a method of your codeigniter controlloer, so almost any controller method can be used as a task.Let's see the code
```php
\CiSwoole\Core\Client::send(
[
'route' => 'your/route/uri/to/a/method'
'params' => ['test' => 666]
]);
```The `route` is used for find which method to be call as a task, and `params` is the parameters array that you may want to pass to the task.
So, that's all of it!
## Server CLI Commands
```shell
// start the swoole server
php index.php swoole/server/start// stop the swoole server
php index.php swoole/server/stop// reload all wokers of swoole server
php index.php swoole/server/reload```
## A little more
The step 2 copied files were config files for this adapter.
`swoole.php` file can set host, port, log file and so on.
`timers.php` file can set some timer methods for swoole server, these timers will be started once the server inited.
You can copy `tests/application` to your `application` for testing. The demos are same as below shows.
```php
class Test extends CI_Controller
{// ------------------------------------------------------------------------------
/**
* here's the task 'tests/test/task'
*/
public function task()
{
$data = $this->input->post(); // as you see, params worked like normally post datalog_message('info', var_export($data, true));
}// ------------------------------------------------------------------------------
/**
* here's the timer method
*
* you should copay timers.php to your config folder,
* then add $timers['tests/test/task_timer'] = 10000; and start the swoole server.
*
* this method would be called every 10 seconds per time.
*/
public function task_timer()
{
log_message('info', 'timer works!');
}// ------------------------------------------------------------------------------
/**
* send data to task
*/
public function send()
{
try
{
\CiSwoole\Core\Client::send(
[
'route' => 'tests/test/task',
'params' => ['hope' => 'it works!'],
]);
}
catch (\Exception $e)
{
log_message('error', $e->getMessage());
log_message('error', $e->getTraceAsString());
}
}// ------------------------------------------------------------------------------
}
```## License
This project is licensed under the MIT license.
## 补充说明
[codeigniter-swoole 的主要应用场景](https://github.com/lanlin/codeigniter-swoole/issues/4)