- Notifications
You must be signed in to change notification settings - Fork 41
Configuration
-
Publish server config file
php artisan vendor:publish --tag=fly-server
. -
Edit server config file
<project_root_dir>/fly.conf.php
. -
Publish app config file
php artisan vendor:publish --tag=fly-app
. -
Edit app config file
<project_root_dir>/config/laravelfly.php
.
Note: items prefixed with "/** depends " deverve your consideration. -
If you put some custome codes before
$app
inbootstrap\app.php
, e.g. definding some const, please move them to a new fileapp-before.php
at the same dir, then include this file inapp.php
and<project_root_dir>/fly.conf.php
.
- Edit
<project_root_dir>/app/Http/Kernel.php
, changeclass Kernel extends HttpKernel
to
if (defined('LARAVELFLY_MODE')) { class WhichKernel extends \LaravelFly\MidKernel{} } else { class WhichKernel extends HttpKernel{} } class Kernel extends WhichKernel
- If you use tinker(), put this line at the top of
public/index.php
:
function tinker(){ return '';}
This line avoids error Call to undefined function tinker()
when you use php-fpm with tinker() left in your code.
-
exclude folders from code inspection in PHPStorm:
vendor/scil/laravel-fly-files/offcial_files
vendor/scil/laravel-fly/tests/offcial_files
-
composer require --dev "shixinke/php-ide-helper"
which is useful in IDE development. An alternative iseaglewu/swoole-ide-helper:dev-master
. -
Config and restart nginx: swoole http server lacks some http functions, so it's better to use swoole with other http servers like nginx. There is a nginx site conf example at
vendor/scil/laravel-fly/config/nginx+swoole.conf
. -
Connection pool. For example:
'mysql' => [ 'driver' => 'mysql', 'pool'=>[ // a pool uses https://github.com/open-smf/connection-pool 'class' => 'LaravelFly\Map\Illuminate\Database\Pool\SmfPool', 'minActive' => 10, 'maxActive' => 30, 'maxWaitTime' => 5, 'maxIdleTime' => 20, 'idleCheckInterval' => 10, ], ... ], 'redis' => [ 'default' => [ 'pool'=>[], ] , ],
- MySql coroutine can be used. Ensure
const LARAVELFLY_COROUTINE = true;
in fly.conf.php, then add 'coroutine' => true, to config/database. This feature is still under dev.
'mysql' => [ 'driver' => 'mysql', 'coroutine' => true, ... ],
- edit `fly.conf.php'
'task_worker_num' => 10, // set a reasonable value
- edit config/laravelfly.php (optional)
'swoole-job' => [ 'delay' => 0, 'memory' => 128, 'timeout' => 60, 'tries' => 0, ],
- for job: edit a job file
Event listener should `implements ShouldQueue.
public function __construct() { $this->swoole = true; }
- for event listener: edit
App\Providers\EventServiceProvider
protected $swooleListeners = [ 'App\Listeners\XxxListener', ];
-
install swoole with compile option
--enable-async-redis
-
edit config/database.php
'redis' => [ 'client' => defined('LARAVELFLY_COROUTINE') && LARAVELFLY_COROUTINE && class_exists('Swoole\Coroutine\Redis') ? 'swoole-redis' : 'predis', 'default' => [ 'host' => env('REDIS_HOST', '127.0.0.1'), 'password' => env('REDIS_PASSWORD', null), 'port' => env('REDIS_PORT', 6379), 'database' => 0, 'var_serialize'=>false, // if serialize php var ], ],
note:
- not implemented methods: scan object sort migrate hscan sscan zscan
- no support cluster
- Start
- Coding Guideline
- Deploy and OS Configuration
- New API
- Design
- Dev about Mode Map
- Dev about Mode Backup