sapi

php进阶面试题总结

*爱你&永不变心* 提交于 2020-08-13 09:53:16
php进阶面试题总结 一、总结 一句话总结: 工作之后,一定要及时总结深入学习,别被温水煮青蛙了 1、mysql_real_escape_string mysql_escape_string有什么本质的区别,有什么用处,为什么被弃用? a、mysql_real_escape_string需要预先连接数据库,并可在第二个参数传入数据库连接(不填则使用上一个连接) b、两者都是对数据库插入数据进行转义,但是mysql_real_escape_string转义时,会考虑数据库连接的字符集。 c、它们的用处都是用来能让数据正常插入到数据库中,并防止sql注入,但是并不能做到100%防止sql注入。 再问:为什么不能100%防止? 答;因为客户端编码以及服务器端编码不同,可能产生注入问题,但是其实这种场景不多见。 继续答:被弃用的原因是官方不再建议使用mysql_xx的数据库操作方式,建议使用pdo和mysqli,因为不管从性能跟安全来看,mysqli都比mysql要好。 衍生出来的问题是mysqli的连接复用(持久化)问题,这一块我并没有答好。 2、什么是内存泄漏,js内存泄漏是怎么产生的? 内存泄漏是因为一块被分配内存既不能被使用,也不能被回收,直到浏览器进程结束。 产生泄漏的原因是闭包维持函数内局部变量,不能被释放,尤其是使用闭包并存在外部引用还setInterval的时候危害很大。

PHP底层运行机制与原理

风格不统一 提交于 2020-08-11 01:20:37
PHP的设计理念及特点 多进程模型:由于PHP是多进程模型,不同请求间互不干涉,这样保证了一个请求挂掉不会对全盘服务造成影响,当然,时代发展,PHP也早已支持多线程模型。 弱类型语言:和C/C++、Java、C#等语言不同,PHP是一门弱类型语言。一个变量的类型并不是一开始就确定不变,运行中才会确定并可能发生隐式或显式的类型转换,这种机制的灵活性在web开发中非常方便、高效。 引擎(Zend)+组件(ext)的模式,降低内部耦合。 中间层(sapi),隔绝web server和PHP。 语法简单灵活,没有太多规范。 PHP的核心架构 PHP核心架构如下图,从下到上可以简单分为四层体系: Zend引擎:纯C实现,是PHP的内核部分,它将PHP代码翻译(词法、语法解析等一系列编译过程)为可执行opcode的处理并实现相应的处理方法、实现了基本的数据结构(如hashtable、oo)、内存分配及管理、提供了相应的api方法供外部调用,是一切的核心,所有的外围功能均围绕Zend实现。 Extensions:围绕着Zend引擎,extensions通过组件式的方式提供各种基础服务,我们常见的各种内置函数(如array 系列)、标准库等都是通过extension来实现。 Sapi :全称是Server Application Programming Interface服务端应用编程接口

Python2调用Salt API

有些话、适合烂在心里 提交于 2020-08-10 06:46:13
# !/usr/bin/env python # coding=utf-8 # For Python2 import urllib,urllib2,json,sys,importlib,argparse reload(sys) sys.setdefaultencoding( ' utf-8 ' ) class saltAPI(): def __init__ (self): self.url = ' http://10.10.2.11:8000 ' self.data = { ' username ' : ' saltapi ' , ' password ' : ' saltapi ' , ' eauth ' : ' pam ' } self.headers = { ' User-Agent ' : ' Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 ' } self.token = self.get_token() self.headers[ ' X-Auth-Token ' ] = self.token # self.headers['Accept'] = 'application/x-yaml' #

Use of SAPI Speech Recognition in a VBS Script?

无人久伴 提交于 2020-07-19 04:29:32
问题 I found this one-line example that allows to use the Windows SAPI Text-to-Speech feature in VBScript: CreateObject("SAPI.SpVoice").Speak("This is a test") I wonder if the SAPI Speech Recognition could be used in a VBScript program in the same easy way. When I seek for such information the tons of SAPI information that appear are related to C++, like the Microsoft SAPI site, or to Text-to-Speech in VBS. I tried to find documentation about the SAPI COM object Speech Recognition part that could

How to change the voice used for SAPI.SPVoice

ぃ、小莉子 提交于 2020-05-28 07:14:36
问题 I would like to be able to select an alternative voice for my Text-To-Speech output. I am using the ComObject SAPI.SPVoice but I am finding that I cannot change the actual voice used. (BTW - I am using SAPI.SPVoice because it works in both PowerShell Core and PowerShell Desktop on Windows 10) ${PromptTTS} = New-Object -ComObject SAPI.SPVoice ❯ $PromptTTS | gm TypeName: System.__ComObject#{269316d8-57bd-11d2-9eee-00c04f797396} Name MemberType Definition ---- ---------- ---------- DisplayUI

PHP中的预定义常量、类常量和魔术常量的区别

无人久伴 提交于 2020-05-05 18:41:26
PHP 向它运行的任何脚本提供了大量的预定义常量。不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。 对于一些基本的常量是这些常量在 PHP 的内核中定义。它包含 PHP、Zend 引擎和 SAPI 模块,如: PHP_VERSION PHP_OS PHP_SAPI PHP_EOL 对于一些是通过加载扩展库才会出现,比如: DIRECTORY_SEPARATOR (string) PATH_SEPARATOR (string) 对于上面的常量是区分大小写的。 有八个魔术常量它们的值随着它们在代码中的位置改变而改变。例如 __LINE__ 的值就依赖于它在脚本中所处的行来决定。 这些特殊的常量不区分大小写,也就是说魔术常量是不区分大小写的。 PHP的几个魔术常量 __LINE__ 文件中的当前行号。 __FILE__ 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。 __DIR__ 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3

Nginx解析PHP的原理 | CGI、FastCGI及php-fpm的关系

余生长醉 提交于 2020-05-05 13:55:38
Nginx解析PHP的原理,CGI/FastCGI以及PHP-Fpm的关系. 一、PHP+Nginx 应运而生 的场景. 随着互联网的发展,用户对此接受面广,数据流的增大使得Web端的运行承载压力日益增大,野蛮生长在大数据时代里的WEB语言PHP也找到了比老搭档更优越的活力搭档Nginx,说到Nginx咱就一起唠一唠这其中的奥妙. 从以下几个维度来剖析一下Nginx的活力所在,当然是和解析PHP的老搭档APACHE相比而言. 性能 1.1 资源占有率少,节省内存资源 1.2 非阻塞式的请求处理机制给之增加了强劲动力,这也是为什么能在高迸发折腾下保持金枪不倒之势. 哈哈~ 1.3 有很多资料千篇一律说性能比Apache提升了3倍,这块不敢苟同。 延展性 2.1 高内聚的模块化设计,简介的模块编写,使得产品更具魅力和活力 2.2 有活跃的技术社区和技术群体,便于技术的支持度. 量级和可用性 3.1 轻量级 3.2 解析静态页面远比解析动态页面性能好. 3.3 配置更简洁友好,戒掉了臃肿. 美中不足的是URL重写还待加强. 3.4 新兴意味着有稳定性的挑战和GUG的伴随,当然不必担忧,有前人铺路呢. 二、什么是CGI、什么是FastCGI,什么是PHP-Fpm,什么是PHP-cgi CGI :是一个可伸缩地、高速地在HTTP server和动态脚本语言间通信的接口 FastCGI :

Python之CMDB资产管理系统

徘徊边缘 提交于 2020-04-21 20:35:09
最近正好在给公司做CMDB资产管理系统,现在做的也差不多了,现在回头吧思路整理下。 CMDB介绍 CMDB --Configuration Management Database 配置管理数据库, CMDB存储与管理企业IT架构中设备的各种配置信息,它与所有服务支持和服务交付流程都紧密相联,支持这些流程的运转、发挥配置信息的价值,同时依赖于相关流程保证数据的准确性。 在实际的项目中,CMDB常常被认为是构建其它ITIL流程的基础而优先考虑,ITIL项目的成败与是否成功建立CMDB有非常大的关系。 一、需求分析 存储所有IT资产信息 数据可手动添加 硬件信息可自动收集 硬件信息可自动变更 可对其它系统灵活开放API API接口安全认证 资产类型: 服务器(物理机/虚拟机) 网络设备(路由器/交换机/AP) 机房设备(机柜/UPS) 软件资产(操作系统license) 资产属性: 品牌、型号、位置、用途、IP 供应商、厂商、合同、购买日期 二、架构设计 功能模块 资产搜集: 通过salt搜集各minion资产信息并统一汇报至CMDB 资产审核: 资产首次汇报需要人工审核 资产查询: 可多条件复杂查询 对外API: 方便其他系统调用资产接口信息,如运维自动化平台 自动变更: 资产变更更新及变更记录 自动监控: (计划) 告警自愈: (暂无) 什么是对外API:

PHP生命周期

淺唱寂寞╮ 提交于 2020-04-06 13:50:26
PHP的整个生命周期被划分为以下几个阶段:模块初始化阶段、请求初始化阶段、执行脚本阶段、请求关闭阶段、模块关闭阶段。php的cli模式下每次执行一个脚本都会完整的经历这些阶段,而FastCgi模式下则只会在启动时执行一次模块初始化阶段,然后接下来的各个请求只会执行请求初始化阶段、脚本执行阶段,请求关闭阶段。 MINIT(module init 模块初始化) 启动 PHP 输出、初始化垃圾回收器 启动 Zend 引擎、注册 Zend 核心扩展、Zend 标准常量 解析 PHP.ini,映射 PHP.ini 相关配置 注册静态、动态编译的扩展 回调各扩展定义的 module starup 钩子函数 用一句话来说,就是初始化类、常量、扩展等 PHP 所用到的资源 RINIT(request init 请求初始化) PHP 初始化脚本执行的基本环境,SAPI 将控制权交给 PHP,激活 Zend 引擎,初始化执行器 PHP 脚本执行 Zend 引擎接管控制权,将 PHP 脚本编译成 Opcodes,并顺序执行 RSHUTDOWN (request shutdown 请求结束) PHP 脚本执行完之后进入请求结束阶段,PHP 启动清理程序,这个阶段,将 flush 输出内容,发送 http 响应内容,关闭 PHP 执行器 MSHUTDOWN(module shutdown 模块关闭)

centos下wordpress的安装

时间秒杀一切 提交于 2020-04-06 06:41:08
安装php5.6依赖的扩展: 1 yum install -y libxml2-devel openssl-devel libcurl-devel libjpeg-devel libpng-devel libicu-devel openldap-devel 下载解压PHP: 在http://php.net/downloads.php可以下载到最新版本的php,这里下载的是php-5.6.8.tar.gz。 1 wget http: // cn2.php.net/distributions/php-5.6.8.tar.gz 2 tar -xzvf php- 5.6 . 8 . tar .gz 3 cd php- 5.6 . 8 编译PHP: ./configure --prefix=/usr/local/php \ --with-config-file-path=/usr/local/php/etc \ --enable-inline-optimization \ --disable-debug \ --disable-rpath \ --enable-shared \ --enable-opcache --enable-fpm \ --with-fpm-user=www \ --with-fpm-group=www \ --with-mysql=mysqlnd \ --with