面试问:PHP的工作原理是怎么样的,说说PHP的生命周期
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">面试中面试官问你啥问题,<span style="color: black;">博主</span>都给你整理在<span style="color: black;">这儿</span>了。<span style="color: black;">每日</span>都会整理一份最接地气的面试题,<span style="color: black;">期盼</span>能<span style="color: black;">帮忙</span>到你!</span></strong><strong style="color: blue;"><img src="https://mmbiz.qpic.cn/mmbiz_png/FZ0PKica3VFiczF4jrJnSn3MSXVGklE8rAJHUarDIYIwOTO8Q80XdAZCkQibz1wdeJywZ59GobIlrCgcKVNDrPqicg/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" style="width: 50%; margin-bottom: 20px;"><img src="https://mmbiz.qpic.cn/mmbiz_png/FZ0PKica3VF9Wbby3f3NnO5A4IkXSicovqmP1rmYGhmfXNoiawicUGia5Ph88Z0aamgEkibVss4MrLOygVXsbiaibS8QMw/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" style="width: 50%; margin-bottom: 20px;"></strong></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">同期</span>带上一套视频教程【</span><span style="color: black;"><strong style="color: blue;"><span style="color: black;">带你横扫PHP职场 全面<span style="color: black;">诠释</span>PHP面试</span></strong></span><span style="color: black;">】,感谢你对本公众号的关注<img src="https://mmbiz.qpic.cn/mmbiz_png/FZ0PKica3VFiczF4jrJnSn3MSXVGklE8rAnMqOIMlHWtbIYpicoV3rXHhQjQOkNI0fF0N6eOm5jGSPQYN3jIOZZxQ/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" style="width: 50%; margin-bottom: 20px;">,<strong style="color: blue;">关注本公众号</strong>,回复:</span><span style="color: black;"><strong style="color: blue;">160705</strong></span><span style="color: black;"><span style="color: black;"> <span style="color: black;">就可</span>获取。</span></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">php是一门适用于web<span style="color: black;">研发</span>的动态语言,它<span style="color: black;">能够</span>说是一个用C语言实现的<span style="color: black;">包括</span><span style="color: black;">海量</span>组件的软件框架。<span style="color: black;">那样</span>,php是<span style="color: black;">怎样</span>工作的呢?它的生命周期是怎么样的呢?</span></p>
<h2 style="color: black; text-align: left; margin-bottom: 10px;"><strong style="color: blue;"><span style="color: black;">表层分析</span></strong></h2>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">php是以请求/响应为周期运行服务端应用程序,当请求进入应用程序,流程如下:</p><span style="color: black;"><img src="https://mmbiz.qpic.cn/mmbiz_png/QibLP1rpwH8sRmibbBWiaBXUhT57qK81hS7vRJbC6zZ3iapFDPoibNOjwZuaE5og0n2kficXPcluf30Wgv3W82iaANkPQ/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" style="width: 50%; margin-bottom: 20px;"></span><span style="color: black;">php的每一个请求都会重复以上的交互。</span>
<h2 style="color: black; text-align: left; margin-bottom: 10px;"><span style="color: black;"><strong style="color: blue;">底层分析</strong></span></h2>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">php的运行模式有两种:web模式和cli模式。无论是哪种公众模式,php的工作原理都是<span style="color: black;">同样</span>的,都是<span style="color: black;">做为</span>一种SAPI运行。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">首要</span>,认识下SAPI是什么?</strong></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">Sapi全<span style="color: black;">叫作</span>是Server Application Programming Interface,<span style="color: black;">亦</span><span style="color: black;">便是</span>服务端应用编程接口。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">Sapi<span style="color: black;">经过</span>一系列钩子函数,使得PHP<span style="color: black;">能够</span>和外围交互数据,这是PHP非常优雅和成功的一个设计,<span style="color: black;">经过</span>sapi成功的将PHP本身和上层应用解耦隔离。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">PHP<span style="color: black;">能够</span><span style="color: black;">再也不</span><span style="color: black;">思虑</span><span style="color: black;">怎样</span>针对<span style="color: black;">区别</span>应用进行兼容,而应用本身<span style="color: black;">亦</span><span style="color: black;">能够</span>针对自己的特点实现<span style="color: black;">区别</span>的处理方式。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">平常</span>的SAPI有cli、cgi、php-fpm以及各服务<span style="color: black;">详细</span>的sapi。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;">生命周期</strong></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">在php的生命周期中,有4个关键调用:</span><span style="color: black;"><img src="https://mmbiz.qpic.cn/mmbiz_png/QibLP1rpwH8sRmibbBWiaBXUhT57qK81hS707g2J2NO5AwJdowo4KvthMl7FUoy1ZoxNHJrEYKicWiaF1HSjRERwkgQ/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" style="width: 50%; margin-bottom: 20px;"></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">以nginx服务器为例,在web模式下,<strong style="color: blue;">生命周期流程</strong>如下:</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><img src="https://mmbiz.qpic.cn/mmbiz_png/QibLP1rpwH8sRmibbBWiaBXUhT57qK81hS7Bk5iapKX5B13d9mj6y6S2MLkjOUpD3AEqT3k3w8dqE45APSJjOKiaVCg/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" style="width: 50%; margin-bottom: 20px;"></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;">SAPI运行PHP都经过下面几个<span style="color: black;">周期</span>:</strong></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">1、模块初始化<span style="color: black;">周期</span>(module init)</span>这个<span style="color: black;">周期</span><span style="color: black;">重点</span>进行PHP框架和Zend引擎的初始化操作。该<span style="color: black;">周期</span>的入口函数为</span><span style="color: black;">php_module_startup()</span><span style="color: black;">。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">这个<span style="color: black;">周期</span><span style="color: black;">通常</span><span style="color: black;">仅在</span>SAPI<span style="color: black;">起步</span>时执行一次,<span style="color: black;">针对</span>Fpm而言,<span style="color: black;">便是</span>在Fpm的</span><span style="color: black;">master</span><span style="color: black;">进程<span style="color: black;">起步</span>时执行的。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">该<span style="color: black;">周期</span>的几个主要处理如下:</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">激活SAPI:</span><span style="color: black;">sapi_activate()</span><span style="color: black;">,初始化请求信息SG(</span><span style="color: black;">request_info</span><span style="color: black;">)、设置读取POST请求的handle等。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">起步</span>PHP输出:</span><span style="color: black;">php_output_startup()</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">初始化垃圾回收器:</span><span style="color: black;">gc_globals_ctor()</span><span style="color: black;">,并分配</span><span style="color: black;">zend_gc_globals</span><span style="color: black;">内存。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">起步</span>Zend引擎:</span><span style="color: black;">zend_startup()</span><span style="color: black;">,<span style="color: black;">重点</span>操作<span style="color: black;">包含</span></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">1 <span style="color: black;">起步</span>内存池 </span><span style="color: black;">start_memory_manager()</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">2 设置<span style="color: black;">有些</span>util函数句柄,如</span><span style="color: black;">zend_error_cb</span><span style="color: black;">、</span><span style="color: black;">zend_pringf````、</span><span style="color: black;">zend_write```等。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">3 设置Zend虚拟机编译、执行器的函数句柄</span><span style="color: black;">zend_compile_file</span><span style="color: black;">、</span><span style="color: black;">zend_execute_ex</span><span style="color: black;">、垃圾回收函数句柄</span><span style="color: black;">gc_collect_cycles</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">4 分配函数符号表 <span style="color: black;">办法</span>符号表(</span><span style="color: black;">function_table</span><span style="color: black;">)、类符号表(</span><span style="color: black;">class_table</span><span style="color: black;">)、常量符号表(</span><span style="color: black;">zend_constants</span><span style="color: black;">)等,<span style="color: black;">倘若</span>是多线程的话,还会分配编译器、执行器的全局变量</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">5 注册Zend核心扩展:</span><span style="color: black;">zend_startup_builtin_funtions()</span><span style="color: black;">,这个扩展是内核<span style="color: black;">供给</span>的,该过程将注册Zend核心扩展<span style="color: black;">供给</span>的函数,如</span><span style="color: black;">strlen</span><span style="color: black;">、</span><span style="color: black;">define</span><span style="color: black;">、</span><span style="color: black;">func_get_args</span><span style="color: black;">、</span><span style="color: black;">class_exists</span><span style="color: black;">等。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">6 注册Zend定义的标准常量:</span><span style="color: black;">zend_register_standard_constants()</span><span style="color: black;">,<span style="color: black;">例如</span></span><span style="color: black;">E_ERROR</span><span style="color: black;">、</span><span style="color: black;">E_WARNING</span><span style="color: black;">、</span><span style="color: black;">E_ALL</span><span style="color: black;">、</span><span style="color: black;">TRUE</span><span style="color: black;">、</span><span style="color: black;">FALSE</span><span style="color: black;">等。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">7 注册</span><span style="color: black;">$GLOBALS</span><span style="color: black;">超全局变量的获取</span><span style="color: black;">handle</span><span style="color: black;">。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">8 分配php.ini配置的存储符号表 EG(</span><span style="color: black;">ini_directives</span><span style="color: black;">)。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">注册PHP定义的常量:</span><span style="color: black;">PHP_VERSION</span><span style="color: black;">、</span><span style="color: black;">PHP_ZTS</span><span style="color: black;">、</span><span style="color: black;">PHP_SAPI</span><span style="color: black;">等。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">解析php.ini:解析完成后所有的php.ini配置<span style="color: black;">保留</span>在</span><span style="color: black;">configuration_hash</span><span style="color: black;">哈希表中。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">映射PHP、Zend核心的php.ini配置:<span style="color: black;">按照</span>解析出的php.ini,获取对应的配置值,将<span style="color: black;">最后</span>的配置<span style="color: black;">插进</span>EG(ini_directives)哈希表。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">注册用于获取</span><span style="color: black;">$_GET</span><span style="color: black;">、</span><span style="color: black;">$_POST</span><span style="color: black;">、</span><span style="color: black;">$_COOKIE</span><span style="color: black;">、</span><span style="color: black;">$_SERVER</span><span style="color: black;">、</span><span style="color: black;">$_ENV</span><span style="color: black;">、</span><span style="color: black;">$_REQUEST</span><span style="color: black;">、</span><span style="color: black;">$_FILES</span><span style="color: black;">变量的</span><span style="color: black;">handle</span><span style="color: black;">。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">注册静态编译的扩展:</span><span style="color: black;">php_register_internal_extensions_func()</span><span style="color: black;">。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">注册动态加载的扩展:</span><span style="color: black;">php_init_register_extensions()</span><span style="color: black;">,将php.ini中配置的扩展加载到PHP中。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">回调各扩展定义的</span><span style="color: black;">module startup</span><span style="color: black;">钩子函数,即<span style="color: black;">经过</span></span><span style="color: black;">PHP_MINIT_FUNCTION()</span><span style="color: black;">定义的函数。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">注册php.ini中禁用的函数、类:</span><span style="color: black;">disable_funstions</span><span style="color: black;">、</span><span style="color: black;">disable_classes</span><span style="color: black;">。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">2、请求初始化<span style="color: black;">周期</span>(request init)</span>当一个页面请求<span style="color: black;">出现</span>时,在请求处理前都会经历的一个<span style="color: black;">周期</span>。<span style="color: black;">针对</span>fpm而言,是在worker进程accept一个请求并读取、解析完请求数据后的一个<span style="color: black;">周期</span>。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">在这个<span style="color: black;">周期</span>内,SAPI层将<span style="color: black;">掌控</span>权交给PHP层,PHP初始化<span style="color: black;">这次</span>请求执行脚本所需的环境变量。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">该<span style="color: black;">周期</span>的处理函数为</span><span style="color: black;">php_request_startup()</span><span style="color: black;">。<span style="color: black;">重点</span>处理有以下几个:</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">(1)激活输出:</span><span style="color: black;">php_output_activate()</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">(2)激活Zend引擎:</span><span style="color: black;">zend_activate()</span><span style="color: black;">,<span style="color: black;">重点</span>操作有</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">(2.1)重置垃圾回收器:</span><span style="color: black;">gc_reset()</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">(2.2)初始化编译器:</span><span style="color: black;">ini_compiler()</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">(2.3)初始化执行器:</span><span style="color: black;">ini_exexutor()</span><span style="color: black;">,将 EG(</span><span style="color: black;">function_table</span><span style="color: black;">)和 EG(</span><span style="color: black;">class_table</span><span style="color: black;">)分别执行 CG(</span><span style="color: black;">function_table</span><span style="color: black;">)和CG(</span><span style="color: black;">class_table</span><span style="color: black;">)。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">(2.4)初始化全局变量符号表 EG(</span><span style="color: black;">symbol_table</span><span style="color: black;">)、include过的文件符号表 EG(</span><span style="color: black;">included_files</span><span style="color: black;">)</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">(2.5)初始化词法扫描器:</span><span style="color: black;">sapi_activate()</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">(3)激活SAPI:</span><span style="color: black;">sapi_activate()</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">(4)回调个扩展定义的request startup钩子函数:</span><span style="color: black;">zend_activate_modules()</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">3、php脚本执行<span style="color: black;">周期</span>(execute sccript)</span>(1)该<span style="color: black;">周期</span><span style="color: black;">包含</span>PHP代码的编译、执行两个核心<span style="color: black;">周期</span>,这<span style="color: black;">亦</span>是Zend引擎最重要的功能。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">(2)在编译<span style="color: black;">周期</span>,PHP脚本将经历从PHP源代码到抽象语法树,再到opline指令的转化过程,<span style="color: black;">最后</span>生成的opline指令<span style="color: black;">便是</span>Zend引擎可识别的执行指令,这些指令被执行器执行,这<span style="color: black;">便是</span>PHP代码解释执行的过程。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">该<span style="color: black;">周期</span>入口函数为</span><span style="color: black;">php_execute_script()</span><span style="color: black;">。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">4、请求结束<span style="color: black;">周期</span>(request shutdown)</span>(1)该<span style="color: black;">周期</span>将flush输出内容、发送</span><span style="color: black;">HTTP</span><span style="color: black;">应答</span><span style="color: black;">header</span><span style="color: black;">头、清理局部变量、关闭编译器、关闭执行器等。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">(2)<span style="color: black;">另一</span>,在该<span style="color: black;">周期</span>将回调各扩展的</span><span style="color: black;">request shutdown</span><span style="color: black;">钩子函数。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">(3)该<span style="color: black;">周期</span>与请求初始化<span style="color: black;">周期</span>操作是相反的。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">5、模块关闭<span style="color: black;">周期</span>(module shutdown)</span>该<span style="color: black;">周期</span>在SAPI关闭时执行,与模块初始化<span style="color: black;">周期</span>对应,这个<span style="color: black;">周期</span><span style="color: black;">重点</span>是进行资源的清理、php各模块的关闭操作,<span style="color: black;">同期</span>,将回调各扩展的</span><span style="color: black;">module shutdown</span><span style="color: black;">钩子函数。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">这是<span style="color: black;">出现</span>在所有请求都<span style="color: black;">已然</span>结束之后,例如关闭fpm的操作。(这个是<span style="color: black;">针对</span>CGI和CLI等SAPI,<span style="color: black;">无</span>“下一个请求”,<span style="color: black;">因此</span>SAPI立刻<span style="color: black;">起始</span>关闭。)</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">注:<span style="color: black;">按照</span><span style="color: black;">区别</span>SAPI的实现,各<span style="color: black;">周期</span>的执行<span style="color: black;">状况</span>会有<span style="color: black;">有些</span>差异,<span style="color: black;">例如</span>命令行模式下,每次执行一个脚本都会完成的经历这些<span style="color: black;">周期</span>。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">而FastCgi模式下则在<span style="color: black;">起步</span>时执行一次模块初始化,<span style="color: black;">而后</span>各个请求只经历请求初始化,脚本执行,请求关闭几个<span style="color: black;">周期</span>,在SAPI关闭时,才经历模块关闭<span style="color: black;">周期</span>。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;"><span style="color: black;"><span style="color: black;">文案</span>来自:https://blog.csdn.net/weixin_33904756/article/details/88857180</span></strong></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;"><span style="color: black;"><strong style="color: blue;">以上是本文的<span style="color: black;">所有</span>内容,<span style="color: black;">期盼</span>对<span style="color: black;">大众</span>的学习有<span style="color: black;">帮忙</span>,觉得有用,有需要就支持一下吧</strong></span></strong></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;">助你面试成功 拿下高薪岗位</strong></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">微X</span>公众号:<span style="color: black;">PHP面试题</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">长按二维码关注</p><img src="https://mmbiz.qpic.cn/mmbiz_jpg/FZ0PKica3VF8AjdAlib9cfcsRE2ET0nOO6zxqicQrtIFZ3TODTdZVzRS8jSE17WMsDMt5ZaicRSWtPlD9cIGlgOIcQ/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" style="width: 50%; margin-bottom: 20px;">
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">学习 | 交流 | 分享 | <span style="color: black;">文案</span></span> </p>
顶楼主,说得太好了! 回顾历史,我们不难发现:无数先辈用鲜血和生命铺就了中华民族复兴的康庄大道。
页:
[1]