<?php
/*
*
单粒模式,只能造出一个对象
1.肯定每次new只能返回一个对象,可以使用静态方法解决
2.子类继承也禁止重写构造方法,添加final搞定
*
*/
//1.普通类的实例,得到2个对象
// class Single{
//
// public $rand;
//
// public function __construct(){
// $this->rand=mt_rand(1000000, 9999999999);
// }
//
// }
//
// var_dump(new Single());
// var_dump(new Single());
//2.单例模式,得到1个对象
class Single{
public $rand;
static $obj;
final protected function __construct(){
$this->rand=mt_rand(1000000, 9999999999);
}
//不使用静态方法就无法new
static function getins(){
//判断是否已经实例化
if(self::$obj==null){
self::$obj=new Single();
}
return self::$obj;
}
}
//测试子类继承,需要实例化子类,只能使用静态方法
class Test extends Single{
}
var_dump(Single::getins());
var_dump(Single::getins());
?>PHP的大多数应用中都会存在大量的数据库操作,如果不用单例模式,那每次都要new操作,但是每次new都会消耗大量的系统资源和内存资源,而且每次打开和关闭数据库都是对数据库的一种极大考验和浪费。所以单例模式经常用在数据库操作类中
php官方已经提供了Iterator(迭代器)接口,通过网上资料的学习,目前看适合超大集合或者数组提取使用。学习一个函数的实现对比内存占用差距.使用迭代器和普通循环实现range()函数。(1).普通循环实现range()函数。function newrange($low, $h...
<?php /** * @throws Exception */ function curl() { throw new \Exception('err...
今天帮朋友查询wordpress执行超级慢的原因,特此记录开启fpm的慢日志,记录执行超过30秒的脚本request_slowlog_timeout = 30 slowlog = var/log/slow.log查看日志[23-May-2019 17...
有时候我们需要爬一个接口,但是这个接口需要很多参数,包括header和cookie要去编写,使用php curl模拟实在太慢。我们可以通过浏览器的network来复制请求为curl命令。例如我需要模拟请求接口地址:https://www.xkmz.cc/Ajax/Debug/delly,我们只需要在...
在调用微信code换openid的接口curl报错curl Received HTTP code 403 from proxy after CONNECT,错误码56。可以看到是curl的代理有问题。然后我自己电脑设置代理去访问curl请求的地址,的确也返回了403,说明代理不允许访问这个地址,联系...
本教程使用的定时任务基于EasyTak实现,EasyTask官方参考文档:https://gitee.com/392223903/EasyTask首先我们必须明白PHP的定时器只能基于CLI命令行形式运行...