干货:几个必备的PHP功能开发

2022-10-11 21:12:33 170 0
魁首哥

使用 glob ()查找文件

大部分PHP函数的函数名从字面上都可以理解其用途,但是当你看到 glob() 的时候,你也许并不知道这是用来做什么的,其实glob()和scandir() 一样,可以用来查找文件,请看下面的用法:

// 取得所有的后缀为PHP的文件 

你还可以查找多种后缀名:

// 取PHP文件和TXT文件 

你还可以加上路径:

$files = glob(‘../images/a*.jpg’); 

除此之外,

MySQL 数据库对每个客户端连接都会分配一个线程,所以连接非常宝贵。开发一个异步的MySQL代理服务器,PHP应用服务器可以 长连接 到这台 Server ,既减轻MYSQL的连接压力,又使PHP保持长连接减少 Connect / Close 的网络开销。

此Server考虑到了设置了 数据库连接池 尺寸,区分忙闲,my SQL i断线重连,并设置了负载保护。基于swoole扩展开发,io循环使用 epoll ,是全异步非阻塞的,可以应对大量TCP连接。

程序的逻辑是:启动时创建N个MySQL连接,收到客户端发来的SQL后,分配1个MySQL连接,将SQL发往数据库服务器。然后等待数据库返回查询结果。当数据库返回结果后,再发给对应的客户端连接。

class DBServer

{

protected $pool_size = 20;

protected $idle_pool = array(); //空闲连接

protected $busy_pool = array(); //工作连接

protected $wait_queue = array(); //等待的请求

protected $wait_queue_max = 100; //等待队列的最大长度,超过后将拒绝新的请求

/**

* @var swoole_server

*/

protected $serv;

function run()

{

$serv = new swoole_server(“127.0.0.1”, 9509);

$serv->set(array(

‘worker_num’ => 1,

));

$serv->on(‘WorkerStart’, array($this, ‘onStart’));

//$serv->on(‘Connect’, array($this, ‘onConnect’));

$serv->on(‘Receive’, array($this, ‘onReceive’));

//$serv->on(‘Close’, array($this, ‘onClose’));

$serv->start();

}

function onStart($serv)

{

$this->serv = $serv;

for ($i = 0; $i < $this->pool_size; $i++) {

$db = new mysqli;

$db->connect(‘127.0.0.1’, ‘root’, ‘root’, ‘test’);

$db_sock = swoole_get_mysqli_sock($db);

swoole_event_add($db_sock, array($this, ‘onSQLReady’));

$this->idle_pool[] = array(

‘mysqli’ => $db,

‘db_sock’ => $db_sock,

‘fd’ => 0,

);

}

echo “Server: start.Swoole version is [” . SWOOLE_VERSION . “]\n”;

}

function onSQLReady($db_sock)

{

$db_res = $this->busy_pool[$db_sock];

$mysqli = $db_res[‘mysqli’];

$fd = $db_res[‘fd’];

还有就是,

Facebook为了优化PHP运作,搭配JIT编 译而打造出虚拟机HHVM。而HHVM虽然拥有快速的执行性能,其为特定用途优化的设计,只能满足小部分的开发者。反之,Rasmus Lerdorf除了想提升PHP的性能表现外,也想要同时满足高端使用者以及业余使用者的需求,让PHP 7成为兼备性能表现及通用功能的程序语言。

然而,开发符合市场上少部分人使用的程序语言并不是难事,但是PHP项目瞄准许多对象,必须同时符合业余使用者及专业开发者需求的原则下,开发难以面面俱 到,因为总是会有部分族群的需求无法被满足,「这就像拿水管大范围的喷洒,而每个人衣服都会被水沾湿一点,但是不会有人的衣服完全湿透。」Rasmus Lerdorf比喻。

不使用外挂框架的PHP的运算性能表现都很优异,但是受到外加框架的影响,原本可以在数秒内处理上千个网页要求的 PHP,性能大幅下降,变为只能处理数十个要求。Rasmus Lerdorf表示,在HHVM出现之前,相较于对PHP性能表现的要求,使用者比较在意PHP能否降低网页开发的难度,而这些框架能让开发者的工作变得 比较简单。但是在Facebook推出HHVM后,引出许多重视PHP性能表现的使用者,让Rasmus Lerdorf意识到许多使用者有性能表现的需求。他开始思考如何将HHVM的JIT架构与PHP融合

收藏
分享
海报
0 条评论
170
上一篇:10个提问频率最高的PHP面试题 下一篇:PHP路由原理剖析,用最少的代码实现一个简易路由

本站已关闭游客评论,请登录或者注册后再评论吧~

忘记密码?

图形验证码