Server->defer

延后执行一个PHP函数。底层会在EventLoop循环完成后执行此函数。此函数的目的是为了让一些PHP代码延后执行,程序优先处理IO事件。底层不保证defer的函数会立即执行,如果是系统关键逻辑,需要尽快执行,请使用after定时器实现。

  1. function Server->defer(callable $callback);
  • defer函数的别名是swoole_event_defer
  • $callback为可执行的函数变量,可以是字符串、数组、匿名函数
  • onWorkerStart回调中执行defer时,必须要等到有事件发生才会回调

defer函数在1.8.0或更高版本可用

使用实例

  1. function query($server, $db) {
  2. $server->defer(function() use ($db) {
  3. $db->close();
  4. });
  5. }