php
slongzhang_
这个作者很懒,什么都没留下…
展开
-
thinkphp5.*模型增加duplicate方法|tp5、tp5.1增加duplicate方法
tp6自带了duplicate方法了,但一些老项目用的是tp5和5.1是不支持duplicate的,这时候如果需要用到duplicate 就需要我们自己去实现了。原创 2023-06-15 17:35:12 · 411 阅读 · 0 评论 -
php+redis实现访问频率控制
【代码】php+redis实现访问频率控制。原创 2023-06-06 23:38:08 · 277 阅读 · 0 评论 -
关于php:如何在Guzzle中读取响应有效的URL?6.0(Guzzle获取重定向后的实际请求地址URL)
查阅了一大堆的资料,终于在码农乐园“关于php:如何在Guzzle中读取响应有效的URL?6.0”找到了6.1的获取重定向后的地址方法了转载 2023-02-13 20:50:56 · 723 阅读 · 0 评论 -
PHP请求库Guzzle配置代理
php请求库配置代理上网(并设置用户名和密码)原创 2023-02-13 20:34:54 · 1876 阅读 · 0 评论 -
think-orm数据库获取PDO对象
tp获取PDO原创 2023-02-12 00:37:27 · 214 阅读 · 0 评论 -
think-orm 数据库断线重连·延迟重连
think-orm 数据库支持断线重连,但因为tp主要是运用于web方向的,所以断线重连直接重试就行,而当运用于长时间运行的脚本在数据库并发大或连接数过多等导致的连接断开,短时间内的直接重试并不一定能连接上,这时候需要进行一定的延时等待数据库完成卡住的任务才能再次被连接上;修改think-orm数据库断线直接重连, 修改底层源码在数据库断开或无法连接时,进行延迟重试原创 2023-02-03 22:50:47 · 400 阅读 · 0 评论 -
php单独使用laravel数据库 | laravel手动关闭数据库连接
非框架,纯脚本案例!!!!!php单独引用laravel的数据库引擎,简单入门案例,惰性链接 、可手动关闭数据库、自动重连原创 2022-09-21 12:57:46 · 654 阅读 · 0 评论 -
php正则笔记-匹配字母、数字、中文
php正则 中文原创 2022-08-29 16:54:18 · 724 阅读 · 0 评论 -
phar笔记
php phar打包原创 2022-08-20 18:31:36 · 179 阅读 · 0 评论 -
php使用composer配置爬虫常用插件
php composer 爬虫 数据库 html解析原创 2022-08-19 16:47:35 · 423 阅读 · 0 评论 -
windows10下PHP7安装扩展curl失败解决办法
按照之前复制curl的相关dll到apache的bin目录,重启Apache后,curl未在PHP7.2、7.3、7.4生效。在网上看了一大堆办法都失败。无奈看了下PHP官网介绍https://www.php.net/manual/zh/curl.installation.php,原来工作方式失效了!直接按照官网操作没那么多问题。按照官网方案,以下是我的http.conf的引用。在apache配置文件中追加下面三行:...转载 2022-07-23 08:54:28 · 655 阅读 · 0 评论 -
有序排列算法-流量关键词拆分
$keyword = 'abcdef';$keyword = str_split($keyword);$keywordLen = count($keyword);$keywords = array();for ($i = 0; $i< $keywordLen; $i++) { for ($j = 0; $j < $keywordLen -$i; $j++) { $keywords[] = implode(' ', array_slice($keyword, $i,原创 2022-05-11 22:39:02 · 94 阅读 · 0 评论 -
php 中phar包的使用教程详解
Phar 归档的概念来自 Java™ 技术的 JAR 归档,它允许使用单个文件打包应用程序,这个文件中包含运行应用程序所需的所有东西。该文件不同于单个可执行文件,后者通常由编程语言生成,比如 C,因为该文件实际上是一个归档文件而非编译过的应用程序。原创 2021-10-12 10:45:40 · 512 阅读 · 0 评论 -
window下通过脚本bat批量执行php脚本
@eacho off# start cmd /k 程序名 文件名start cmd /k php test1.phpstart cmd /k php test2.php原创 2021-08-11 10:10:53 · 438 阅读 · 0 评论 -
PHP之Trait详解
php从以前到现在一直都是单继承的语言,无法同时从两个基类中继承属性和方法,为了解决这个问题,php出了Trait这个特性转载 2021-08-08 21:25:25 · 41454 阅读 · 2 评论 -
tp6中间件如何获取应用名称、控制器、方法?
根据Tp6手册的常规中间件设置,全局中间件是无法获取到应用和控制器、方法名的public function handle($request, \Closure $next){ $appName = app('http')->getName(); $controller = $request->controller(); $action = $request->action();}解决办法:1、在config的route.php文件追加定义:'middleware'转载 2021-05-24 11:56:08 · 2871 阅读 · 0 评论 -
SublimeText分号后自动提示问题(sublimeCodeInetel插件致命bug)
方法一:卸载sublimeCodeInetel方法二:一、打开Preferences -> Package Settings -> SublimeCodeIntel -> Key Bindings - User二、编译为如下图(如果为空则直接复制我的代码,有内容则追加上红色框框里的代码)如果是追加的需要注意JSON格式,不要漏掉逗号[ { "keys": [";"] ,"command": "run_macro_file"原创 2021-05-23 16:00:37 · 494 阅读 · 0 评论 -
HTTP常见状态码(404、400、500)等错误
一些常见的状态码为:200 - 服务器成功返回网页404 - 请求的网页不存在503 - 服务不可用详细分解:1xx(临时响应)表示临时响应并需要请求者继续执行操作的状态代码。代码 说明100 (继续) 请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。101 (切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。2xx (成功)表示成功处理了请求的状态代码。代码 说明200 (成功) 服务器已成功处理了请求。通常,这表示服务器提供了请转载 2021-05-15 13:58:14 · 6866 阅读 · 0 评论 -
MySQL 分组之后如何统计记录条数 gourp by 之后的 count()
group by 语句SELECT unique_id FROM `table_name` GROUP BY unique_id;获取group 条数SELECT COUNT(DISTINCT `unique_id `) FROM `table_name`原创 2021-05-14 17:49:50 · 1237 阅读 · 0 评论 -
tp6子查询匿名函数
$mid = 3; $modelSellerOrders = new SellerOrders(); // 实例化seller_orders表模型 $result = $modelSellerOrders->where('id', 'in', function ($query) use($mid) { $query->name('seller_orders')->where('mid', $mid)->field('min(id) as id')-&.原创 2021-05-14 14:43:46 · 488 阅读 · 0 评论 -
php配合redis设置登录风控
/** * 登录风控,可以登录返回true,不可登录返回剩余时间戳 * 除了用户名主键外,还可以设置下ip主键,进一步提高风控级别 */function login_risk($username){ $ip = get_client_ip();// 获取用户ip // 判断是否可以登录,如果被禁止登录则提示用户不可登录 $redis = new Redis(); // 实例化redis对象 #... 设置相关redis配置 $redis_key = 'slon原创 2021-05-13 10:22:51 · 285 阅读 · 0 评论 -
composer 配置 切换中国镜像
composer 默认地址改为中国镜像地址,以及中国镜像地址还原成默认地址一、查看当前镜像地址在命令行输入如下命令,即可查看全局镜像地址:$ composer config -gl repo.packagist{ "type":"composer", "url":"https://packagist.org", "allow_ssl_downgrade":true }下面有把地址修改为中国镜像,如果中国镜像出现了问题,那么您可以还原成官方的默认地址,下面是详细。二、启用中国全量镜像服务:启转载 2021-05-04 12:36:33 · 1974 阅读 · 3 评论 -
tp6控制器initialize方法拦截,重定向
<?php// +----------------------------------------------------------------------// | 不懈努力,只为遇见更好的自己// +----------------------------------------------------------------------// | Copyright (c) 2020 http://www.slong.ink All rights reserved.// +-------原创 2021-05-01 22:25:33 · 40041 阅读 · 1 评论 -
tp配置邮箱发送邮件
一、获取邮箱的授权码(这里以126邮箱为案例)1.登录邮箱,点击设置2.开启IMAP|SMTP 或 POP3|SMTP服务3.获取授权码到授权码标题二、下载邮箱类库1.使用composer安装phpmailer(推荐使用此方法) composer require phpmailer/phpmailer2.手动下载引用[下载地址](https://github.com/PHPMailer/PHPMailer):https://github.com/PHPMailer/PHPMailer原创 2021-04-30 16:14:44 · 2639 阅读 · 3 评论 -
php统一转换键值大小写问题array_change_key_case函数扩展至多维
// 将改变数组key的大小写function iarray_change_key_case(&$array, $case = CASE_LOWER) { $array = array_change_key_case($array, $case); foreach ($array as $key => $value) { if ( is_array($value) ) { iarray_change_key_case($array[$k转载 2021-04-15 10:53:55 · 127 阅读 · 0 评论 -
tp6数据库链式操作之duplicate案例
TP6 关于duplicate的详细用法原创 2021-04-12 18:48:39 · 1516 阅读 · 1 评论 -
CSV转数组、CSV转JSON(JS+PHP双版本)
一、csv转JSONfunction CSVToArray(strData, strDelimiter) { // Check to see if the delimiter is defined. If not, // then default to comma. strDelimiter = (strDelimiter || ","); // Create a regular expression to parse the CSV values. var obj原创 2021-04-07 15:54:44 · 44186 阅读 · 1 评论 -
PHP+JS(pako)前后端数据压缩,节省带宽方案(Uint8Array与Base64互转、gzip压缩、gzinflate、gzdeflate、zlib、大数据压缩)
前后端数据之间的交互,在数据量比较大的时候经常会有带宽占用高,数据传输慢,并且文件越大传输时间就越长,为了减少传输时间和优化网站提高用户体验;这时候我们就考虑一些压缩的方案了原创 2021-04-03 16:30:18 · 57098 阅读 · 0 评论 -
tp6控制器里直接调用验证器
public function vilidate_test(){ $phone = input('phone',''); $name = input('name',''); // 判断手机号是否合法 $data = [ 'name' => $name, 'phone' => $phone ]; $rule = [ 'name' => 'require|max:25', 'ph原创 2021-02-22 18:02:24 · 83006 阅读 · 0 评论 -
php中require、require_once、include、include_once类库重复引入效率问题详解
转载自 黄寿松的博客 php中require、require_once、include、include_once类库重复引入效率问题详解include() 与require() 的功能相同唯一不同:require()不管是否被执行,只要存在,php在执行前都会预引入,include()则是执行到该语句时才进行引入include_once() 与 require_once() 都是检测文件是否被引入,被引入则不会引入唯一不同: require_once()为无条件包含,顾名思义也就是引入后如遇到错误则转载 2021-01-11 14:24:31 · 82840 阅读 · 1 评论 -
php写入文本,文件夹不存在则创建
// 安全文件路径,$fileName:完成文件路径function securityFilePath($fileName,$read_write = '0777'){ $path = dirname($fileName); if(!file_exists($path)){// 判断路径是否存在,如果不存在则mkdir创建,并写入权限 mkdir ($path,$read_write,true); }}...原创 2020-12-14 15:32:21 · 83180 阅读 · 0 评论 -
phpQuery解析HTML乱码问题(补充官网未列出的乱码解决方案)
phpQuery解析HTML( $dom = new DOMDocument(); )在有html头部时会去识别查询<metacharset=“字符编码”>,对按charset编码去解析,但部分html的编码声明是使用<metahttp-equiv=“content-type” content=“text/html; charset=字符编码” />这个时候只需要对要解析的内容拼接“<meta charset=“字符编码”>”即可;<?phpdate.原创 2020-12-14 11:27:01 · 109645 阅读 · 0 评论 -
PHP-格式化字符串打印var_export()
var_export() 函数用于输出或返回一个变量,以字符串形式表示。var_export() 函数返回关于传递给该函数的变量的结构信息,它和 var_dump() 类似,不同的是其返回的是一个合法的 PHP代码。PHP 版本要求: PHP 4 >= 4.2.0, PHP 5, PHP 7语法mixed var_export ( mixed $expression [, bool $return ] )参数说明:$expression: 你要输出的变量。$return: 可选,.原创 2020-11-10 17:31:06 · 81304 阅读 · 0 评论 -
ThinkPHP6.0 扩展类库目录(extend)
本文转自 辰风沐阳 的 ThinkPHP6.0 扩展类库目录(extend)框架根目录下的 extend 目录称为扩展类库目录,用于存放一些自定义的类,只要符合自动加载的规范(命名空间、类名、文件名),就可以拿来直接使用1. extend 目录的直接子内容假设在 extend 目录下创建一个 Upload.php 文件,如果是 extend 目录的直接子内容则不需要添加命名空间<?phpclass Upload{ }此时可以在控制器中直接使用 \Upload 类,特别注意命转载 2020-10-05 15:42:37 · 100957 阅读 · 0 评论 -
关于不可控肉鸡爬虫列表的页码问题解决方案
在列表爬取时,经常存在分页问题(某一页采集失败),为了避免资源浪费,我们不可能再从第一页开始采集;那么每个采集成功的页码进行标识就很有必要了,在所需采集页码数少的情况下我们可以通过给采集任务表添加上每个页码的字段,在对应页码采集成功的时候更新采集完成时间,但在页码数多的情况下(如采集淘宝某关键词前100页的产品)该方法就不切实际了;我采用的思路是通过0和1来标识对应顺序的页码是否采集成功;如现在需要采集前10页,那么初始化页码标识就是10个0的字符串;(下面案例使用的是php语言)// 初始化页码.原创 2020-09-15 17:06:08 · 122384 阅读 · 0 评论 -
php远程请求CURL案例(爬虫、保存登录状态)
GET案例/** * curl_get * @param $url * @param null $param * @param null $options * @return array */function curl_get($url,$param = null,$options = null){ if(empty($options)){ $options = array( 'timeout' => 30,原创 2020-08-15 15:24:55 · 158154 阅读 · 2 评论 -
前后端(PHP+JS)处理无限分类、无限行业、无限层级、树形、列表案例
<?phpnamespace slong;class CatTree { private $order = 'orders'; // 有排序字段和表的对应,如果没有这个字段可以不写 private $id = 'id'; //表的id字段 private $pid = 'pid'; //表的父级pid字段 private $son = 'subcat'; //如果有子数组,子数组下标, 可以自定义值 private $level = 'level'; //默认的新加级别下标, 可以自定原创 2020-07-07 23:17:00 · 137339 阅读 · 0 评论 -
php 解析非标准json、非规范json
// 解析非标准json,注意暂时未处理 {str:['aaaa','bbb']}$json = preg_replace ( "/\s(?=\s)/","\\1", $json );// 多个空格只留一个$json = preg_replace( "/([\{\}\,]+)\s?'?\s?(\w*?)\s?'?\s?:\s?/", '\\1"\\2":', $json);// 转义key$json = preg_replace("/\"\s?:\'\s?(.*?)\'\s?([\,\]\}]+?)/原创 2020-07-06 16:43:29 · 158673 阅读 · 1 评论 -
tp php 获取控制器及控制器方法
php 权限控制器等获取php 获取文件名(获取控制器,通过读目录的方式)$planPath = APP_PATH.$modules[$type]['name'].'/controller';$planList = array();$dirRes = opendir($planPath);while($dir = readdir($dirRes)){ if(!in_array($dir,array('.','..','.svn'))) { $planList[] = basename($原创 2020-07-06 10:15:12 · 118027 阅读 · 0 评论 -
phpqrcode生成二维码直接输出(不用exit)
1.首先去官网下载PHPqrCode库文件,只需要里面的phpqrcode.php文件,下载地址:http://phpqrcode.sourceforge.net2.引入文件,这里以thinkphp的公共方法为例/*** phpqrcode php生成二维码* $frame string 二维码内容* $filename string|false 默认为否,不生成文件,只将二维码图片返回...原创 2019-02-02 00:13:06 · 184099 阅读 · 0 评论