以下两种方式均可安装beyod, 选择适合你的方式即可
composer create-project --prefer-dist beyoio/beyod-app beyod-app
composer update
https://codeload.github.com/beyoio/beyod-app/zip/master
然后在项目目录中更新依赖
composer update
传统的php web编程上,我们无须考虑资源释放的问题,因为php web方式中,资源的创建和销毁都是基于请求的,当请求结束后,所有的资源被释放,程序员一般无须过多考虑此问题。
但beyod是以PHP长驻内存方式运行的,需要考虑到内存释放的问题,静态/全局变量,静态/全局计数器增长,要特别小心,避免无限增长而导致内存溢出或逻辑错误。
例如mysql has gone away, 因为beyod是以长驻内存方式运行,当连接空闲超时后,将被服务器切换,客户端在一个已经被服务器断开的连接上执行查询, 就会出现此错误,正确的解决方法是一旦捕获到此异常后,重新连接执行查询即可,beyod内置此支持,配置数据库组件即可:
#config/main.php
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=test;charset=utf8',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'commandClass' => 'beyod\db\Command', //使用此配置,自动处理mysql has gone away之问题。
],
传统的php web方式编程,是典型的单线程、同步阻塞方式运行,最接近人脑的思维方式,流程简单清晰,使得程序易于编写和理解。
但是一旦涉及到异步编程,问题就变得比较复杂,回调函数被调用的顺序是未知的。一个事件的产生,往往伴随着回调函数的触发,回调函数的触发,往往也是因为某个事件产生。所以事件、回调是异步编程的重要概念。
传统的php web编程中,可能无须过多考虑运行中异常的问题,即便运行出错,用户刷新浏览器即可。但是在网络程序中,错误/异常/有效性提前检测是一个好习惯,传入数据异常可能就会引起调用出错,从而导致进程崩溃重启,就影响了业务的稳定性。另一方面,这也对程序员提出了更高的要求。
业务层的处理,你仍然可以使用同步方式实现(如MySQL的交互)。这使得逻辑的实现更为容易。