Swoole 5 将移除自动添加 Event::wait() 特性

2019-07-09
阅读 1 分钟
6.8k
在之前的版本中,编写Cli命令行脚本中使用异步或协程功能时,Swoole会自动在脚本末尾检测是否有Event::wait()调用,如果没有,底层会自动调用register_shutdown_function在脚本结束时调用Event::wait(),进入事件循环。

🚀 Hyperf v1.0 发布,全新企业级的 PHP 协程微服务框架

2019-06-20
阅读 2 分钟
20.2k
Hyperf 是基于 Swoole 4.3+ 实现的高性能、高灵活性的 PHP 协程框架,内置协程服务器及大量常用的组件,性能较传统基于 PHP-FPM 的框架有质的提升,提供超高性能的同时,也保持着极其灵活的可扩展性,标准组件均均基于 PSR 标准 实现,基于强大的依赖注入设计,保证了绝大部分组件或类都是 可替换 与 可复用 的。

Swoole 5 将移除 PSR-0 下划线风格类名

2019-06-20
阅读 1 分钟
10.3k
Swoole 在 1.x - 4.x版本中同时提供了PSR-0规范的下划线风格类名和PSR-4的命名空间风格。目前PSR-0规范已于2014年10月21日被标记为弃用,目前最新的替代规范为 PSR-4。

Swoole 4.4:支持 CURL 协程化

2019-06-05
阅读 23 分钟
14.4k
在4.4之前的版本中,Swoole一直不支持CURL协程化,在代码中无法使用curl。由于curl使用了libcurl库实现,无法直接hook它的socket,4.4版本使用Swoole\Coroutine\Http\Client模拟实现了curl的API,并在底层替换了curl_init等函数的C Handler。

Swoole Compiler 加密 Drupal 产生的一些问题

2019-05-28
阅读 10 分钟
8.6k
上个星期碰到个客户使用Swoole Compiler加密Drupal导致Drupal项目无法运行的问题,逐步排查后总结问题是Drupal中有部分代码直接通过file_get_contents获取PHP源码导致的,因为项目代码是加密过后的,所以直接获取PHP源码解析是获取不到想要的内容的。注:

Swoole 4.4 协程抢占式调度器详解

2019-05-21
阅读 3 分钟
13k
Swoole内核团队开设的专栏,会逐渐投入精力写文章介绍Swoole的开发历程,实现原理,应用实践等,大家可以更好的交流,共同学习,建设PHP生态。

Swoole协程之旅-前篇

2019-04-16
阅读 2 分钟
6.5k
  Swoole协程经历了几个里程碑,我们需要在前进的道路上不断总结与回顾自己的发展历程,正所谓温故而知新,本系列文章将分为协程之旅前、中、后三篇。

协程 C/C++ 扩展开发指南(1):内存安全

2019-03-17
阅读 1 分钟
7.8k
Swoole4 协程的出现使得 PHP 底层上从原来串行模式变成了并发模式。有很多 PHP 的C/C++扩展在开发时未能考虑到并发性、可重入问题,导致无法在Swoole协程中使用。本文会详细讲解如何编写协程并发安全的C/C++代码。

Swoole 2019 :化繁为简、破茧成蝶

2019-01-21
阅读 3 分钟
24.9k
Swoole开源项目从2012年开始发布第一个版本,到现在已经有近7年的历史。在这七年的时间里: 提交了8821次代码变更 发布了287个版本 收到并解决1161次issue反馈 合并了603次pull request 共有100位开发者贡献代码 在GitHub收获了11940颗星 协程 2018年我们推出了全新的Swoole4版本,在此之前Swoole主要的编程方式还是同步...

PHP 协程:Go + Chan + Defer

2018-12-04
阅读 4 分钟
19k
Swoole4为PHP语言提供了强大的CSP协程编程模式。底层提供了3个关键词,可以方便地实现各类功能。 Swoole4提供的PHP协程语法借鉴自Golang,在此向GO开发组致敬 PHP+Swoole协程可以与Golang很好地互补。Golang:静态语言,严谨强大性能好,PHP+Swoole:动态语言,灵活简单易用 本文基于Swoole-4.2.9和PHP-7.2.9版本 关键词...

PHP协程:并发 shell_exec

2018-11-29
阅读 1 分钟
9.8k
在PHP程序中经常需要用shell_exec执行一些命令,而普通的shell_exec是阻塞的,如果命令执行时间过长,那可能会导致进程完全卡住。在Swoole4协程环境下可以用Co::exec并发地执行很多命令。

Swoole 4.1.0 正式版发布,支持原生 Redis/PDO/MySQLi 协程化

2018-08-31
阅读 2 分钟
9.5k
可使用Swoole\Runtime::enableCorotuine()将普通的同步阻塞Redis、PDO、MySQLi操作变为协程调度的异步非阻塞IO

Swoole 4.0 正式版,面向生产环境的 PHP 协程引擎

2018-06-14
阅读 2 分钟
22.4k
Swoole虽然在2016年就支持了协程特性,但由于底层是基于setjmp/longjmp实现的stackless方案。因此在某些场景下,如call_user_func、array_map、__destruct中无法使用协程。大型应用程序中逻辑非常复杂,多人协作的团队中,开发者很容易踩到坑。在禁止场景中使用协程API会出现各种莫名其妙的问题发生。限制了协程的应用范...

Swoole 1.10.2 发布,BUG 修复版本

2018-03-14
阅读 1 分钟
2.8k
PHP的异步、并行、高性能网络通信引擎Swoole已发布1.10.2版本。此版本修复了多个问题,建议所有用户升级。 主要更新: 修复BASE模式设置max_request=1时发生崩溃的问题 修复WebSocket客户端在握手响应与数据帧在同一个传输单元时解包失败的问题 修复SSL连接无法使用sendfile的问题 修复BASE模式下频繁reload导致进程丢失...

Swoole 2.1 正式版发布,协程+通道带来全新的 PHP 编程模式

2018-02-09
阅读 3 分钟
13.1k
PHP的异步、并行、高性能网络通信引擎 Swoole 已发布 2.1.0 版本。新版本提供了全新的短名 API,完整支持了协程(Coroutine)+通道(Channel)特性,为 PHP 语言带来了全新的编程模式。Swoole 2.1的API借鉴至Go语言,在此向Go语言开发组致敬。

聊聊 2018 年后端技术趋势

2018-01-24
阅读 2 分钟
31.7k
Go 语言越来越热门,很多大型互联网公司后端正在转向 GO 。Java 圈知名的服务化框架 Dubbo 也宣布转型异步模式。这是一个大趋势,异步模式已经被市场验证和认可。

Swoole 1.10.0 发布,增加多项新特性

2018-01-08
阅读 3 分钟
7.6k
新版本的异步客户端不再需要使用 swoole_async_dns_lookup 解析域名了,底层实现了自动域名解析。Client 在执行 connect 方法时可直接传入域名。

PHP-X 系列教程:扩展内定义类和对象

2017-09-26
阅读 3 分钟
6.3k
接着上一篇文章,本文开始在扩展内实现类的定义和对象操作。基于PHP-X提供的封装,使用C++语言可以轻松地实现一个PHP的类,还可以在C++代码中创建任意PHP对象,调用对象方法、读写对象的属性。

如何基于 PHP-X 快速开发一个 PHP 扩展

2017-09-11
阅读 4 分钟
31.9k
从2012年开始编写swoole,现在算来已经有5个年头了。我发现编写一个 PHP 扩展这个工作非常艰难。PHP 程序员群体中,甚至可以说 100 人中都很难找出一个会编写 PHP 扩展的人来。PHP 官方对扩展开发者非常不友好,源代码中提供的Zend API极其难用,API复杂而且凌乱,充斥着各种宏的写法。Zend API坑非常多,普通开发者很容...

如何实现从 Redis 中订阅消息转发到 WebSocket 客户端

2017-09-03
阅读 1 分钟
24.7k
PHP 的redis扩展是阻塞式 IO ,使用订阅/发布模式时,会导致整个进程进入阻塞。因此必须使用Swoole\Redis异步客户端来实现。

swoole_table 实现原理剖析

2017-08-25
阅读 8 分钟
16.3k
Swoole项目从 2012 年推出到现在已经有 5 年的历史,现在越来越多的互联网企业使用Swoole来开发各类后台应用。受限于 PHP 的ZendVM实现,PHP 程序无法使用多线程进行编程开发。应用程序中实现并行处理只能使用多进程模式。

2017年PHP程序员未来路在何方

2017-03-30
阅读 3 分钟
43.5k
PHP 从诞生到现在已经有20多年历史,从Web时代兴起到移动互联网退潮,互联网领域各种编程语言和技术层出不穷, Node.js 、 GO 、 Python 不断地在挑战 PHP 的地位。这些技术的推动者非常热衷于唱衰 PHP , PHP 语言的未来在哪里?PHP 程序员当如何应对未来的变革?

在php-fpm或apache中使用swoole提供的task功能

2017-01-03
阅读 1 分钟
6.9k
AsyncTask是swoole提供一套生产者消费者模型,可以方便地将一个慢速任务投递到队列,由进程池异步地执行。task功能目前只能在swoole_server中使用。1.9.0版本提供了RedisServer框架,可以基于RedisServer和Task实现一个Server程序,在php-fpm或apache中直接调用Redis扩展就可以使用swoole的task功能了。