基于PHP spl 遍历文件删除过期的日志文件 一.定义PHP类 , 限制文件扩展 RecursiveFileFilterIterator.class.php <?php class RecursiveFileFilterIterator extends FilterIterator { protected $ext = array('log','jpg','gif'); public function __construct($path) { paren…
基于PHP spl 遍历文件删除过期的日志文件 一.定义PHP类 , 限制文件扩展 RecursiveFileFilterIterator.class.php <?php class RecursiveFileFilterIterator extends FilterIterator { protected $ext = array('log','jpg','gif'); public function __construct($path) { paren…
简介: 建造者模式,又称之为生成器模式,属于创建型的设计模式。将一个复杂对象的构建,与它的表示分离,使得同样的构建过程可以创建不同的表示。 适用场景: 用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的(这就表名可以抽离),但对象的外在面临着复杂的变化。 优点: 创建和表象分离 缺点: 如果核心类内部发生变化,建造者也要相应修改 与工厂模式: 比工厂模式多了一道自行处理的工序 代码: abstract class TestPaper { abstract public function BuildPa…
一、安装PHP 下载:https://windows.php.net/download 我下载的是此时的最新版8.2.3 下载后 解压目录 放到C:/tool下面目录重命名为PHP 目录自己定 我这个tool目录是个人习惯 你可以放到主流的C:\Program Files下也可以放到D盘E盘任何地方都可以 里面的php.ini-development 重命名为php.ini 打开php.ini编辑 找到 ;extension_dir = “ext” 打开注释改为 extension_dir = &…
1,消息队列解决方案: RabbitMQ:RabbitMQ 是一个开源的 AMQP 消息中间件,提供了高可用、高并发、高吞吐量的消息队列服务。使用 PHP 语言可以通过 AMQP 扩展连接到 RabbitMQ 服务,实现消息的生产、消费和处理。 Redis 队列:Redis 是一个开源的内存数据库,提供了高速、高性能的数据结构服务,如字符串、列表、集合、哈希表等。通过使用 Redis 的 List 类型实现队列,可以实现消息的生产、消费和处理。 Kafka:Kafka 是一个开源的分布式消息系统,具有高吞吐量、低延…
缓存击穿是指缓存中没有的数据,而查询非常频繁的数据,导致大量的请求落到了数据库上,因此很容易导致数据库连接数暴增,甚至导致宕机。 下面是 PHP 解决缓存击穿问题的一般解决方案: // 获取 Key $key = 'my_key'; // 根据 Key 从 Redis 中获取数据 $data = $redis->get($key); // 如果数据不存在,尝试从DB中获取数据 if (!$data) { // 尝试获取缓存锁 $lockKey = 'my_redis_lock…
最近在考虑用php的成品源码去搭建一个个人博客网页,于是就想着先在本地运行好后,然后再使用服务器来搭建php的环境和网页。 1.运行工具 因为本地基本只是考虑练习,不考虑真正的去搭建php环境,所以就想到了一个很实用的php小工具,用于测试可以说是一个很不错的选择:phpStudy_pro,一个免费且好用的小集成环境吧(应该是)。 总结:phpStudy_pro 2.编写工具 运行的环境既然已经确定了,编写的工具倒是不是很好选,很多,但是心仪的工具确实是没有的,因为还是在校大学生,而且本身这…
0x001 自定义参数 $extra_param = "Some extra param"; Hook::add('response_end', function($params) use ($extra_param) { Log::info('Extra: '.$extra_param); }); 本文来自博客园,作者:小枫同学,未经作者许可,禁止转载、复制、重新发布完整或者部分文字、代码、图片等信息,否则将保留追究法律责任的权利。查阅文章的同学,由于网…
PHP的类是单一继承模式,也就是每个类只能继承一个父类(基类)。 但有时需要引入更多通用(共用)的方法,同时这些方法又不适合集成到基类。 那么这时,就需要使用其他方法来引入这些方法。其中trait,就是方法之一。 trait是PHP5.4之后出现的一种代码复用方法,形式和Class非常相似,同时可以随意组合任意引入。 trait一般在当前类和其同父类(基类)的其他类都需要使用相同方法时,而其父类(基类)又要尽量避免出现这些方法时使用。 甚至有时可能其他关联不是特别大的类(分别继承不同的父类)也可能会使用共同的方法,…
环境ThinkPHP+Redis 1.IP保存文件,文件名自定义,与后文对应 2.获取IP信息脚本.sh文件 #!/bin/bash #variables ip_txt_path=/www/wwwroot/checkip/china_ip.txt; ip_url='http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest'; php_path=/www/server/php/72/bin/php script_path=/w…
一、时间戳和日期互相转换 // 获取时间戳 $date = time(); // 获取当前时间戳 $date = mktime(0, 0, 0, 10, 10, 2020); // 获取指定时间的时间戳 2020年10月10日0时0分0秒 // 日期转换为时间戳 $date = "2019-08-08 08:08:08"; $timestamp = strtotime($date); // 将时间戳转换成日期 $date = time(); echo date('Y-m-d', $d…