
php
fangdong88
这个作者很懒,什么都没留下…
展开
-
phpunit骚操作之静态类的部分mock
通过官方文档以及实践得知,含有静态方法的类如果需要mock,就要使用前缀 alias: ,但是随之而来有个问题是后面无法调用这个类本身的方法,所以通过阅读源码可以使用以下方法来实现:1.创建 Helpers 类进行封装2.创建静态类3.测试运行............原创 2022-06-29 11:12:33 · 579 阅读 · 0 评论 -
mac安装php7.2
brew安装提示失败原来是brew已经不支持7.2了,只有用其他办法来安装安装完成提示根据上面提示启动即可原创 2022-06-23 21:53:11 · 1849 阅读 · 0 评论 -
php简单实现中间件功能
中间件顾名思义是指在请求和响应中间,进行请求数据的拦截处理,数据校验,并且进行逻辑处理后判断是否允许进入下一个中间件。中间件分为前缀中间件,后置中间件。可以用于权限认证。日志记录等下面用面向对象来简单实现一个php中间件功能1.主程序编写<?phpclass App{ protected $middlewares = []; public function run($request) { $handler = function($request)原创 2022-03-11 15:10:45 · 1818 阅读 · 0 评论 -
php 使用 ProtoBuf
以下教程为无需c扩展版本官网下载protoc脚本,用于生成所需php类https://github.com/protocolbuffers/protobuf/releaseswindow下下载win32或者win64版本,mac下载osx版本解压后得到可运行的脚本protoc编写proto消息类型,保存为person.protosyntax="proto3";package proto;message Person{ string name=1; int32原创 2021-10-19 14:36:00 · 1592 阅读 · 0 评论 -
docker构建nginx+php8
拉取官方php8.0镜像docker pullphp:8.0-fpm// --name php8 将php的容器命名为php8// ~/Desktop/wwwroot/:/www 本地~/Desktop/wwwroot/目录映射至容器/www目录// -d 后台运行docker run --name php8 -v ~/Desktop/wwwroot/:/www -d php:8.0-fpm拉取官方最新nginx镜像docker pullnginx:latest创建本地n..原创 2021-10-18 12:39:53 · 1515 阅读 · 0 评论 -
php中Redis使用Lua脚本
主要使用到eval命令EVAL命令:命令格式:EVAL script numkeys key [key …] arg [arg …]-script参数是一段 Lua5.1 脚本程序。脚本不必(也不应该[^1])定义为一个 Lua 函数-numkeys指定后续参数有几个key,即:key [key …]中key的个数。如没有key,则为0-key [key …]从 EVAL 的第三个参数开始算起,表示在脚本中所用到的那些 Redis 键(key)。在Lua脚本中通过KEYS[1], K...原创 2021-08-24 17:25:06 · 525 阅读 · 0 评论 -
yii2-elasticsearch报错Cluster autodetection did not find any active node
报错详细内容:Cluster autodetection did not find any active node. Make sure a GET /_nodes reguest on the hosts defined in the configreturns the "http_address" field for each node.解决办法:打开 vendor/yiisoft/yii2-elasticsearch/Connection.php183行左右找到代码foreac原创 2021-07-12 10:53:42 · 181 阅读 · 0 评论 -
php下Yii2用redis实现接口访问频率限制
基于访问ip做的访问频率限制class Limit{ /** * api 访问频率限制 * @param $uid * @param int $timeout * @param string $path */ public static function requestLimit($ip = null, $timeout = 0, $path = '') { if (empty($ip) {原创 2021-07-01 17:24:58 · 515 阅读 · 0 评论 -
php实现aws s3预上传
1. composer 安装aws工具类composer require aws/aws-sdk-php2.获取预上传链接 use Aws\S3\S3Client; /** * aws s3 获取s3预上传文件presigned url * @param [type] $key [aws的目录] * @return [type] [string] */ public static fu原创 2021-04-20 15:55:16 · 815 阅读 · 0 评论 -
yii2下composer安装失败解决办法
执行composer global require "fxp/composer-asset-plugin:~1.3"如果失败,检查composer版本和php版本https://github.com/fxpio/composer-asset-plugin/releases原创 2021-03-14 15:13:00 · 412 阅读 · 0 评论 -
php实现布隆过滤器
<?phpclass Bloom { // 哈希函数的数量 protected $hashNum = 3; // 位数组的大小 protected $bitArrayCount = 1024*10; // 位数组 protected $bitArray = []; public function __construct() { // 构建默认的位数组,全部置为 false $this->b.原创 2020-12-28 16:37:18 · 329 阅读 · 0 评论 -
php+js实现腾讯地图计算两点间直线距离
js实现方法, 从微信小程序官方SDK中分离出来的var EARTH_RADIUS = 6378136.49; /** * 计算角度 */ function rad(d) { return d * Math.PI / 180.0;}/** * 计算两点间直线距离 * @param a 表示纬度差 * @param b 表示经度差 * @return 返回的是距离,单位m */function getDistance(latFrom, lngFrom, latTo, l原创 2020-11-19 15:13:26 · 733 阅读 · 0 评论 -
php使用Elasticsearch7进行地理位置搜索
简单封装ES类, 需要注意es7下取消了type<?phpnamespace app\common\lib;use Elasticsearch\ClientBuilder;class Es{ private $client; // 构造函数 public function __construct() { $params = array( '127.0.0.1:9200' ); $t原创 2020-11-18 10:49:11 · 786 阅读 · 0 评论 -
thinkphp3.2更改入口文件目录
在根目录创建web文件夹将index.php, .htaccess, Public文件夹 等非核心文件移动至web文件夹内修改index.php将define('APP_PATH','./Application/'); 改为define('APP_PATH', __DIR__ . '/../Application/');将require './ThinkPHP/Thin...原创 2020-01-09 17:31:28 · 1312 阅读 · 0 评论 -
linux下安装redis
参考文章:http://blog.youkuaiyun.com/ul646691993/article/details/52736279下载redis# wget http://download.redis.io/releases/redis-3.0.4.tar.gz解压下载文件# tar -xzvf redis-3.0.4.tar.gz编译安装redis# cd redi原创 2017-07-26 16:15:46 · 230 阅读 · 0 评论 -
php实现简单链式操作mysql数据库类
<?php$dbConfig = require_once(dirname(__FILE__).'/config.php');class Db{ public $conn; private $host = null; private $user = null; private $password = null; private $dat...原创 2018-11-21 17:15:33 · 1344 阅读 · 0 评论 -
phpexcel实现excel导出
//使用前记得安装phpexcel //composer require phpoffice/phpexcel use PHPExcel_IOFactory; use PHPExcel; $PHPExcel = new PHPExcel(); //实例化PHPExcel类 $PHPSheet = $PHPExcel->getAc...原创 2018-11-23 18:32:35 · 179 阅读 · 0 评论 -
php实现多csv文件导出zip压缩包
使用phpexcel生成csv文件 $fileNameArr = array(); foreach ($list as $ii => $group_data) { $csv_title = $ii; $file_temp = $csv_title . '.csv'; $fileNameArr[] = $file_temp;...原创 2018-11-23 18:37:52 · 1004 阅读 · 0 评论 -
原生php+jquery.form.js异步上传文件
html<!DOCTYPE html><html><head> <meta charset="utf-8"> <title></title> <meta name="description" content=""/>原创 2018-11-23 18:52:40 · 341 阅读 · 0 评论 -
php curl获取302跳转后的链接
单个获取function get_redirect_url($url) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFE...原创 2018-12-25 17:06:21 · 3505 阅读 · 0 评论 -
php+phantom.js实现绕过ClourFare或百度云加速验证
下载phantomjs 官网地址http://phantomjs.org/download.html创建getCookie.jsvar page = require('webpage').create()page.settings.userAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KH...原创 2018-10-08 09:31:36 · 1446 阅读 · 2 评论 -
thinkphp5实现根据渠道号不同实现安卓和IOS的APP支付和H5支付
<?phpnamespace app\api\controller;use think\Controller;use app\common\model\ShopInfo as ShopInfoModel;use app\common\model\UserOrderInfo as UserOrderInfoModel;use app\common\model\User as Use...原创 2018-09-14 10:47:20 · 800 阅读 · 0 评论 -
php curl实现多线程采集
配合pcntl扩展还可以实现多进程原创 2017-10-22 17:24:38 · 622 阅读 · 0 评论 -
laravel使用transformer转化器和分页
参考 https://github.com/Cyvelnet/laravel5-fractalcomposer require league/fractal 0.14.0composer require Cyvelnet/laravel5-fractal打开config/app.php在providers中添加Cyvelnet\Laravel5Fractal\Larave原创 2017-05-19 20:17:05 · 10214 阅读 · 2 评论 -
php swoole 异步处理任务例子
安装swoole:下载官方swoole压缩包,解压进入目录$ cd swoole # 进入 swoole 目录$ phpize $ ./configure --with-php-config=/usr/local/php/bin/php-config #注意查看服务器上是否有这个路径$ make && m原创 2017-09-21 11:50:15 · 880 阅读 · 0 评论 -
php swoole多进程/多线程例子
swoole的多线程其实就是多进程,进程创建太多切换的开销很大,如果能用上pthreads建议用pthreads,因为我用的是php7nts版本没办法用pthreadsswoole实例如下:<?php/** * 创建多进程 */$worker_num = 6; // 默认进程数$workers = [];原创 2017-09-21 11:35:20 · 7446 阅读 · 2 评论 -
linux centos7下php7安装redis扩展
下载php7的redis扩展git clone -b develop https://github.com/phpredis/phpredis.git$ cd phpredis # 进入 phpredis 目录$ /usr/local/php/bin/phpize # php安装后的路径$ ./configure -...原创 2017-07-26 15:59:40 · 614 阅读 · 0 评论 -
laravel5中使用七牛云存储、上传图片
安装composer require itbdw/laravel-storage-qiniuconfig/app.php 里面的 providers 加上一行 itbdw\QiniuStorage\QiniuFilesystemServiceProvider::class,config/filesystems.php 里面的 disks数组加上'qiniu' => [原创 2017-05-22 19:50:00 · 7249 阅读 · 3 评论 -
laravel结合七牛实现base64的图片上传
确保传到后台的是纯base64字符串而不是以data开头的 //base64图片上传 public function uploadCompressImg(Request $request) { $base64 = preg_replace("/\s/",'+',$request->input('img')); $img = base64原创 2017-05-22 20:04:21 · 3278 阅读 · 0 评论 -
linux下安装composer
curl -sS https://getcomposer.org/installer | phpmv composer.phar /usr/local/bin/composer原创 2017-05-31 19:33:04 · 235 阅读 · 0 评论 -
php curl实现图片下载
$return_content = http_get_data($img_url); file_put_contents($filename, $return_content);function http_get_data($url) { $ch = curl_init (); curl_setopt($ch, CURLOPT...原创 2017-10-22 17:26:45 · 1089 阅读 · 0 评论 -
thinkphp3.2路由分页实现
public function show() { if(0 == $this->totalRows) return ''; /* 生成URL */ $this->parameter[$this->p] = '[PAGE]'; //$this->url = U('Movie/'.ACTION_NAME, $this->parameter原创 2017-10-23 16:05:21 · 1375 阅读 · 0 评论 -
thinkphp5实现ios苹果ApplePay内购的验证流程
创建方法function curlHtml($url, $data = ''){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); ...原创 2018-09-14 10:37:55 · 3902 阅读 · 0 评论 -
php+mysql实现短信验证码功能
class Sms { const EXPIRE_SEC = 300; // 过期时间间隔 5分钟 const RESEND_SEC = 60; // 重发时间间隔 const ONE_DAY_FREQ = 10; // 每日向同一个手机号发短信的次数 public $error = ''; protected $sms_status = array( ...原创 2018-09-14 10:06:52 · 1504 阅读 · 0 评论 -
php unserialize返回false的解决办法
php unserialize失败返回false原因多半是序列化数据时的编码与反序列化时的编码不一致,导致单引号等特殊字符计算长度不正确,所以解决办法是重新计算长度。百度了很多办法,全是坑呀,百度的那些办法根本没用,都是错的。所以自己写了个,绝对有效!反序列化时用下面函数处理下就行function common_unserialize($serial_str) { $serial...原创 2018-05-31 09:29:06 · 1134 阅读 · 0 评论 -
tp3.2实现七牛云图片上传
七牛上传插件框架已经自带了的,所以只需配置下然后写代码就ok了config.php加入如下配置'UPLOAD_SITEIMG_QINIU' => array( 'maxSize' => 5 * 1024 * 1024,//文件大小 'rootPath' => './', 'saveName' => array('uniqid'...原创 2018-04-26 14:40:14 · 1198 阅读 · 0 评论 -
php实现简单的守护进程
前提要安装有pcntl扩展,可通过php -m查看是否安装<?phpclass Daemon { private $pidfile; function __construct() { $this->pidfile = dirname(__FILE__).'/daemontest.pid'; } private function start原创 2017-11-24 14:55:54 · 1765 阅读 · 0 评论 -
记一个坑,lnmp安装包下开启pathinfo
#注释 下面这一行 #include enable-php.conf#改为下面的include enable-php-pathinfo.conf原创 2017-11-16 12:40:11 · 2520 阅读 · 0 评论 -
php实现表单验证类
php表单验证,验证器,验证规则,Validator原创 2017-11-17 16:14:36 · 1341 阅读 · 0 评论 -
thinkphp5结合mysql实现微信登录和自定义分享链接和图文
php代码 function curlHtml($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_s...原创 2017-11-13 15:52:03 · 1742 阅读 · 0 评论