File tree Expand file tree Collapse file tree 1 file changed +24
-3
lines changed
Expand file tree Collapse file tree 1 file changed +24
-3
lines changed Original file line number Diff line number Diff line change @@ -147,7 +147,7 @@ PHP 5 新增了一个 final 关键字。如果父类中的方法被声明为 fin
147147
148148调用类的静态函数时不会自动调用类的构造函数
149149
150- ### 接口类和抽象类的区别
150+ ### 接口和抽象的区别
151151抽象用于描述不同的事物,接口用于描述事物的行为。
152152
153153### PHP 不实例化调用方法
@@ -528,7 +528,25 @@ $ phpize $ ./configure $ make && make install
528528
529529### Swoole 适用场景,协程实现方式
530530
531- 那你知道swoole的进程模型
531+ Swoole 是一个使用 C++ 语言编写的基于异步事件驱动和协程的并行网络通信引擎,为 PHP 提供协程、高性能网络编程支持。提供了多种通信协议的网络服务器和客户端模块,可以方便快速的实现 TCP/UDP服务、高性能Web、WebSocket服务、物联网、实时通讯、游戏、微服务等,使 PHP 不再局限于传统的 Web 领域。
532+
533+
534+ 协程可以简单理解为线程,只不过这个线程是用户态的,不需要操作系统参与,创建销毁和切换的成本非常低,和线程不同的是协程没法利用多核 cpu 的,想利用多核 cpu 需要依赖 Swoole 的多进程模型。
535+ 在底层实现上是单线程的,因此同一时间只有一个协程在工作,协程的执行是串行的。
536+ 采用 CSP 编程模型,即不要以共享内存的方式来通信,相反,要通过通信来共享内存。
537+ swoole4.0采用双栈方式,通过栈桢切换来实现协程;即遇到IO等待就切换到。
538+
539+ #### swoole的进程模型
540+
541+ 同一台主机上两个进程间通信 (简称 IPC) 的方式有很多种,在 Swoole 中使用了 2 种方式 Unix Socket 和 sysvmsg。
542+
543+ swoole启动后会生成master进程、reactor线程、worker进程、task进程以及manager进程
544+
545+ master进程是一个多线程进程,会生成多个reactor线程
546+ reactor线程负载网络监听、数据收发
547+ work进程处理reactor线程投递的请求数据
548+ task进程处理work进程投递的任务
549+ manager进程用于管理work进程和task进程
532550
533551### PHP 数组底层实现 (HashTable + Linked list)
534552
@@ -562,4 +580,7 @@ PHP 数组实现由 hashtable 变为 zend array
562580
563581### BOM 头是什么,怎么除去
564582
565- ### 模板引擎是什么,解决什么问题、实现原理(Smarty、Twig、Blade)
583+ WINDOWS自带的记事本,在保存一个以 UTF-8 编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM);它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。
584+ 去除方法:$result = trim($result, "\xEF\xBB\xBF");
585+
586+ ### 模板引擎是什么,解决什么问题、实现原理(Smarty、Twig、Blade)
You can’t perform that action at this time.
0 commit comments