-
[PHP] 使用curl扩展POST或者PUT时数据不全和连接中断的排查
所属栏目:[大数据] 日期:2021-05-21 热度:93
在项目中使用到了curl扩展进行PUT传递数据到另一个接口,但是看到的现象是有时候偶发数据是空的 . 这个时候就使用了tcpdump命令来查看连接情况 具体命令是下面,另一个接口的端口号是8025?: tcpdump -i any port 8025 -l -s 0 ? 可以看到在我请求对方时出现下[详细]
-
[PHP] PHP数组的哈希表实现
所属栏目:[大数据] 日期:2021-05-21 热度:191
1.HashTable中的有个字段记录元素个数,每插入一个元素或者unset删掉元素时会更新这个字段。这样在进行count()函数统计数组元素个数时就能快速的返回。 2.在PHP中可以使用字符串或者数字作为数组的索引,数字索引直接就可以作为哈希表的索引,数字也无需进行[详细]
-
[PHP]外观/门面/Facade模式-结构型设计模式
所属栏目:[大数据] 日期:2021-05-21 热度:110
外观(Facade)模式又叫作门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性[详细]
-
[PHP] 多条spl_autoload_register的执行顺序
所属栏目:[大数据] 日期:2021-05-21 热度:162
函数的定义如下: spl_autoload_register ([ callable $autoload_function [, bool $ throw = true [,1)">bool $prepend = false ]]] ) : bool 官方的解释是: 如果需要多条 autoload 函数,spl_autoload_register() 满足了此类需求。 它实际上创建了 autoload[详细]
-
[PHP] 判断两个数组是否相同
所属栏目:[大数据] 日期:2021-05-21 热度:126
PHP中判断两个数组是否相同,如果是关联数组,可以直接使用==来进行判断 $c=array( " a " = 12 " );$d =array( );var_dump($c == $d);//true ? 如果是索引数组,可以使用array_diff来进行判断: if ( !array_diff($arr1,$arr2) ! array_diff($arr2,$arr1)){ //[详细]
-
[PHP] 组合模式-结构型设计模式
所属栏目:[大数据] 日期:2021-05-21 热度:115
以单个对象的方式来对待一组对象 有一个接口类,有一个需实现的方法,其他所有类都实现它,在一个组合类的实现方法中循环调用另外其他类的方法 有一个公共的接口类 interface Renderable{ public function render(): string ;} 组合类,也实现了接口 class Form[详细]
-
[PHP] 单例模式-创建型设计模式
所属栏目:[大数据] 日期:2021-05-21 热度:108
使应用中只存在一个对象的实例,并且使这个单实例负责所有对该对象的调用 final class Singleton{ private static ?Singleton $instance = null ; public static function getInstance(): Singleton { if ( static ::$instance === ) { static ::$instance =[详细]
-
[PHP] 504 Gateway Time-out处理流程
所属栏目:[大数据] 日期:2021-05-21 热度:140
当访问一个接口出现这个错误时?504 Gateway Time-out,可以有以下处理流程 首先查看Nginx的access日志,看看接口请求是否到达了 tail -f /var/log/Nginx/xxxx-access.log? ? ?可以得知Nginx部分已经到达 ? 后端是PHP-fpm,可以查看fpm的error日志 tail -f /var/[详细]
-
[PHP] 装饰器模式-结构型设计模式
所属栏目:[大数据] 日期:2021-05-21 热度:125
动态地为类的实例添加功能,一层一层的套功能 先定义好接口 interface Booking{ public function getDescription(): string ;} ? 这个就是装饰器实现了Booking,通过构造函数传递Booking对象进来 abstract class BookingDecorator implements Booking{ protec[详细]
-
[PHP] class_exists类不存在时会调用__autoload函数
所属栏目:[大数据] 日期:2021-05-21 热度:146
该函数的定义如下: class_exists ( string $class_name [, bool $autoload = true ] ) : bool 第二个参数就是表示是否自动调用autoload函数 class_name类名。名字的匹配是不分区大小写的。autoload是否默认调用 __autoload。 当然现在建议使用下面的函数进行[详细]
-
[PHP] 静态工厂模式-创建型设计模式
所属栏目:[大数据] 日期:2021-05-21 热度:136
和抽象工厂类似,静态工厂模式用来创建一系列互相关联或依赖的对象 和抽象工厂模式不同的是静态工厂模式只用一个静态方法就解决了所有类型的对象创建 ? 工厂里提供一个静态方法来创建不同的对象实例 final class StaticFactory{ public static function fact[详细]
-
[PHP] 解决chrome新版same-site策略跨域无法记录cookie
所属栏目:[大数据] 日期:2021-05-21 热度:155
在chrome 80版本以上,会默认开启same-site策略 samesite有以下几个值 Lax : 对同源、顶级域的请求才可以携带cookie (等价于same-site) Strict: 对同源请求才可以使携带cookie (等价于same-origin) None: 对于cookie的使用无限制,随便使用 解决跨域问[详细]
-
[PHP] 数据映射器模式-结构型设计模式
所属栏目:[大数据] 日期:2021-05-21 热度:188
数据映射器是一个数据访问层,用于将数据在持久性数据存储(通常是一个关系数据库)和内存中的数据表示(领域层)之间进行相互转换。其目的是为了将数据的内存表示、持久存储、数据访问进行分离。该层由一个或者多个映射器组成(或者数据访问对象),并且进[详细]
-
[PHP] PHP 8.0.0 Alpha 1已发布
所属栏目:[大数据] 日期:2021-05-21 热度:192
据PHP官网的消息: PHP 8.0.0 Alpha 1可用于测试 2020年6月25日 PHP团队很高兴宣布PHP 8.0.0的第一个测试版本Alpha1。这将启动PHP 8.0的发布周期,其粗略概述在PHP Wiki中进行了指定。 有关PHP 8.0.0 Alpha 1的源代码下载,请访问下载页面。https://download[详细]
-
[PHP] 最新抢先编译安装PHP8.0.0 alph1以及FPM [PHP]
所属栏目:[大数据] 日期:2021-05-21 热度:125
(麻烦各位转载请注明出处和地址:陶士涵的菜地,谢谢 --2020年6月28日) 所有操作需要在root用户下 本机测试案例系统信息:ubuntu 安装路径:/usr/local/PHP8 ? ? 解压缩: wget https://downloads.PHP.net/~pollita/PHP-8.0.0alpha1.tar.gz tar -zxvf?PHP-8.0.[详细]
-
[PHP] session_write_close()的作用
所属栏目:[大数据] 日期:2021-05-21 热度:95
简单地说,当开启session_start以后,这个session会一直开启,并且被一个用户使用。其他用户开启session的话要等待第一个session用户关闭以后才可以开启session,这样就造成了session阻塞。而session_write_close()可以解决这个session阻塞机制。 解决sessio[详细]
-
[PHP]解决nginx php上传文件限制413 Request Entity Too Large
所属栏目:[大数据] 日期:2021-05-21 热度:124
Nginx配置http块中增加 client_max_body_size 200m; PHP-fpm的PHP.ini配置文件中增加: upload_max_filesize = 200M ? 如果不知道fpm下的PHP.ini在哪,可以直接grep?upload_max_filesize -R /etc/PHP 查找位置 ?[详细]
-
[PHP] 原型模式-创建型设计模式
所属栏目:[大数据] 日期:2021-05-21 热度:165
通过创建一个原型对象,然后复制原型对象来避免通过标准的方式创建大量的对象产生的开销(new Foo())。 大量的数据对象(比如通过ORM获取1,000,000行数据库记录然后创建每一条记录对应的对象实体) 带构造方法、属性的类,clone的性能要比new带上构造参数的性能[详细]
-
[PHP]post传递数据时的报错Array to string conversion
所属栏目:[大数据] 日期:2021-05-21 热度:163
当使用curl传递post数据时,数据的字段如果是个数组,就会报错Array to string conversion 在调用curl_setopt_array($curl,$options); 调用curl_setopt($ch,CURLOPT_POSTFIELDS,$data) 这两处地方都可能会报错,解决办法是把数据数组处理一下 http_build_query([详细]
-
[PHP] 新浪企邮webmail在memcache实践使用共享session
所属栏目:[大数据] 日期:2021-05-21 热度:195
memcache作为key-value的内存缓存数据库,使用简单,运行稳定,在redis之前一直大量使用,新浪企邮webmail中也大量使用 ? 共享session? 在有多台后端负载服务器的情况下,PHP默认的文件存储session就不适用了,因为用户在访问的时候会访问到后端不同机器,那在获取[详细]
-
[PHP] 对象池模式-创建型设计模式
所属栏目:[大数据] 日期:2021-05-21 热度:82
最重要的特征是,有两个数组存对象,忙的数组和闲的数组. 当使用对象后,不是立即销毁对象,而是放回池子闲的数组里面,下次使用直接拿,拿到后放到忙的数组里.当拿不到的时候就再创建新 ? class WorkerPool{ /* * * @var 忙的数组 */ private array $occupiedWork[详细]
-
[PHP] 查找使用的哪个配置文件php.ini
所属栏目:[大数据] 日期:2021-05-21 热度:168
在配置PHP的过程中经常遇到不知道PHP.ini文件在哪,以及不知道哪一个PHP.ini在起作用,改动了配置后依然不生效 可以有下面的方法去查找 PHP -i|grep PHP.ini strace -e open PHP -m 在这个命令里去查看PHP命令打开了哪个PHP.ini文件,非常的精确 ? 上次配置[详细]
-
[PHP] 源码编译安装opcache
所属栏目:[大数据] 日期:2021-05-21 热度:134
上次编译完PHP8,发现opcache扩展没有安装,那么就进入到源码目录下的ext目录执行PHPize 比如我解压缩后的源码目录是 /home/ubuntu/myPHP/PHP-8.0.0alpha1/ ? 进入 /home/ubuntu/myPHP/PHP-8.0.0alpha1/ext/opcache 执行(这是我安装PHP8的路径) /usr/local/PH[详细]
-
[PHP] 生成器模式-创建型设计模式
所属栏目:[大数据] 日期:2021-05-21 热度:116
目的:生成器的目的是将复杂对象的创建过程(流程)进行抽象,生成器表现为接口的形式。 如果对象有复杂的继承树,理论上创建对象的生成器也同样具有复杂的继承树。 传进来一个生成器,我调用这个生成器来生成我所需要的汽车,这就是生成器模式的核心.这个生成[详细]
-
[PHP] 抽象工厂设计模式-创建型设计模式
所属栏目:[大数据] 日期:2021-05-21 热度:143
抽象工厂: 在不指定具体类的情况下创建一系列相关或从属对象。最重要的特征就是抽象类的组合. 通常,创建的类都实现相同的接口。抽象工厂的客户端并不关心这些对象的创建方式,只是知道它们如何组合在一起。 三个抽象类 interface WriterFactory{ public fun[详细]