PHP
文章平均质量分 61
eddieHoo
我们一无所成的主要原因是想的太多,而做的太少!
展开
-
Nginx+PHP 网站 form 表单提交数据过大被截取的解决方法
nginx.confclient_max_body_size 500m;php.inimax_input_vars = 10000PHP从5.3.9开始增加一个变量max_input_vars用来限制提交的表单数量,折腾了半天,原来php小版本升级引起的不兼容,php中默认post中的参数的个数是1000, 超过部分会被自动扔掉。用 phpinfo()查看max_input_vars。如下图所示:解决方法很简单,在PHP.ini中设置 max_input_var...原创 2021-01-22 15:17:42 · 1071 阅读 · 0 评论 -
使用yield大量数据处理
我们在处理大量数据,比如100万数据导入数据库,一般常规方法如果使用普通循环做逐个处理,很快会导致内存崩溃,无法实现正常的处理。php提供了yield方法来处理。我们看看如何来做的吧。for($i=0;$i<1000000;$i++){ echo $i; //这里处理业务数据}我们看到上面是,普通循环100万次处理,这样处理如果仅输出$i,比较小,但累计起来也会使电脑变得很慢,直至内存耗尽程序崩溃,如果是数据导入,需要每次连接数据库非常耗内存操作的话,会很快崩溃。所以这种方法不.原创 2021-01-04 23:30:40 · 502 阅读 · 0 评论 -
安装tp6后开启多应用模式
基本要求: ThinkPHP6.0的环境要求:PHP >= 7.1.06.0版本开始,必须通过Composer方式安装和更新,所以你无法通过Git下载安装。一、安装稳定版composer create-project topthink/think tp, tp是安装完成的目录名称 ,可以根据自己需要修改。如果你之前已经安装过,那么切换到你的应用根目录下面,然后执行下面的命令进行更新:composer update topthink/framework ,更新操作会删除thinkp.原创 2020-12-30 10:50:49 · 1148 阅读 · 0 评论 -
php常用代码片段
1.检测用户位置使用下面的函数,可以检测用户是在哪个城市访问你的网站function detect_city($ip) { $default = 'UNKNOWN'; $curlopt_useragent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3...原创 2020-06-28 11:48:14 · 244 阅读 · 0 评论 -
Laravel 项目加速指南
很多人都说用 Laravel 做开发很好但是性能太差,我曾经也一度这么认为,最近围绕 composer 做一些行项目 ,研究了 composer 的自动加载机制,顺便研究了下 Laravel 项目,发现,事实上 Laravel 并不慢,只不过还是我们没有用好它罢了。PHP 项目慢的几个重要原因首先想到的导致 PHP 项目慢的一个首要原因就是 IO 问题, 因为php是解释型语言,所以每次请求都要读取源代码并进行语法解析,解决这个问题要从两方面下手:一是将解析过的文件的结果都缓存起来,下次直接读取原创 2020-06-28 10:28:39 · 1361 阅读 · 0 评论 -
php设计模式之——门面模式
因为同样的设计思想在不同的场景下人们就会对它有不同的认识,这基本上其实是用来帮助使用者判断在什么场景下该用什么设计模式。门面模式Facade今天来学习下门面模式。门面模式是指提供一个统一的接口来调用多个子系统的接口。听起来也没什么复杂的,我来解释下。理解门面模式其实门面模式这个思想在现实生活中到处都是,几乎我们使用的每个产品都是由很多小的子系统组合而成,但是每个产品都对外提供了统一的用户接口。比如我们要在淘宝买东西,我基本上只需要鼠标点一些按钮就完成了,但是实际上网站的后台是很多个子系统原创 2020-06-27 22:45:34 · 239 阅读 · 0 评论 -
PHP设计模式之——观察者模式
今天来介绍一个很有用的设计模式,“观察者模式”,顾名思义,既然有“观察者”, 那么一定就有“被观察者”,从这个层面可以理解到,在这个设计模式中有两个对象, 一个是主体对象,一个是客体对象,在实际的代码实现上实际是“被观察者”主动通知了“观察者”。“被观察者”是主体对象,现在看不懂没关系,把下面的代码抄几遍就懂了。PHP 提供了两个内置接口来帮助实现“观察者模式”, 其中“被观察者”需要实现 SplSubject 接口,“观察者”需要实现SplOberver。来看一个例子:<?phpc原创 2020-06-27 22:44:13 · 135 阅读 · 0 评论 -
PHP 代码简洁之道
一、PHP 简洁代码之道 clean-code-php, 是基于 Clean Code: A Handbook of Agile Software Craftmanship(Clean Code: 敏捷软件开发工艺手册) 这本书做的指南,该书是 Bob Martin 叔叔写的关于如何编写可维护代码的经典书籍。clean-code-php 指南的灵感来源于 Javascript 版本的 clean-code-javascript ,在其基础加上了 PHP 的特点。以下是我最喜欢的 clean-co原创 2020-06-26 21:18:09 · 300 阅读 · 0 评论 -
Nginx与Apache解析php文件的区别
一、Apache是如何解析php文件的我们常说的lamp架构是linux、apache、mysql、php,我们知道任何架构或者网站离不开数据库的支持,那么php和apache又是如何协同工作的呢?php是apache的一个外挂程序,必须依靠web服务器才可以运行。当客户端浏览器触发事件--->php程序提交到apache服务器---->apache服务器根据php程序的特点判断是php程序,并从内存或者硬盘中提取访问所需要的应用程序,将其提交给php引擎程序--->php引擎程序原创 2020-06-20 20:23:30 · 301 阅读 · 0 评论 -
php str_split 中文 乱码问题 解决
function str_split_unicode($str, $l = 0) { if ($l > 0) { $ret = array(); $len = mb_strlen($str, "UTF-8"); for ($i = 0; $i < $len; $i += $l) { $ret[] = mb_substr($str, $i, $l, "UTF-8"); .原创 2020-06-02 16:38:39 · 1004 阅读 · 0 评论 -
call_user_func() 方法使用
call_user_func(PHP 4, PHP 5, PHP 7)call_user_func—把第一个参数作为回调函数调用说明:call_user_func(callable$callback[,mixed$parameter[,mixed$...]] ) :mixed第一个参数callback是被调用的回调函数,其余参数是回调函数的参数。请...原创 2020-01-08 14:14:39 · 426 阅读 · 0 评论 -
Yar 搭建RPC服务
一、安装 Yar类方法的远程调用,也就是一个rpc请求。RPC本质上也是一个网络请求,既然是请求,对于效率来说,就需要考虑了。yar是基于http来做的。特点:能够实现多个请求并发。优点:这些调用通过扩展的c代码实现,简单高效pecl install yarpecl install msgpack安装yar过程若提示libcurl需要reinstall,wget ...原创 2019-11-06 16:04:00 · 584 阅读 · 0 评论 -
Laravel 开启跨域功能
人在江湖走,哪有不湿鞋?经常做api开发的的时候,总会遇到跨域的情况,特别是前后端完全分离的情况,为什么会这样呢?出于安全性的原因,浏览器会限制 Script 中的跨域请求。由于 XMLHttpRequest 遵循同源策略,所有使用 XMLHttpRequest 构造 HTTP 请求的应用只能访问自己的域名,如果需要构造跨域的请求,那么开发者需要配合浏览器做出一些允许跨域的配置。解...原创 2019-10-28 11:52:12 · 1972 阅读 · 0 评论 -
Laravel中利用Scout集成Elasticsearch搜索引擎
写在前面Elasticsearch(以下简称es)是一个实时的分布式搜索和分析引擎。在搜索引擎方面,不仅仅有Elasticsearch,像另一篇提到的Algolia,还有sphinx、Solr等等,这里不做评价和比较,本篇主要介绍laravel中如何使用Elasticsearch。首选必须安装有Elasticsearch,请参考https://www.tech1024.cn/orig...原创 2019-10-28 11:49:35 · 1097 阅读 · 0 评论 -
Laravel从现有数据库逆向生成数据库迁移文件,包括索引和外键!
熟悉laravel的同学都知道,laravel的数据迁移和数据填充,能够随着源代码的改变而同步记录同步数据库结构的变化,也就是对数据库的版本控制。但是,有的项目开发之初,数据库结构的变化会比较频繁,每个都手动创建migrate文件的,工作量会比较大,或者老项目已有数据库,如果手动为所有的已存在的表去创建迁移文件的会非常耗时,还容易出错。这里,就给大家分享一下如何逆向生成迁移文件。本文基...原创 2019-10-28 11:37:51 · 1815 阅读 · 0 评论 -
brew update慢,brew install慢如何解决?
主要是资源访问太慢造成的,替换默认源镜像就行。brew使用国内镜像源这里用中科大的,另外还有清华的可用 1 2 3 4 5 6 7 8 9 10 # 步骤一 cd "$(brew --repo)" git remote set-url origin https://...原创 2019-10-25 11:45:28 · 2460 阅读 · 1 评论 -
centos7 YUM安装lnmp
1、安装LNMP之前要安装EPEL,以便安装源以外的软件,如Nginx,phpMyAdmin等。yum install epel-release提示:EPEL,即Extra Packages for Enterprise Linux,企业版linux附加包。这个软件仓库里有很多非常常用的软件,而且是专门针对RHEL设计的,对RHEL标准yum源是一个很好的补充,完全免费使用,由Fe原创 2017-06-17 13:09:58 · 10003 阅读 · 0 评论 -
linux基于lnmp搭建wordpress博客
1.下载wordpress源码包wget 官网下载地址(请自行查阅)2.放到根目录mv wordpress-4.3.1-zh_CN.tar.gz /usr/share/nginx/html/3.解压tar -zxvf wordpress-4.3.1-zh_CN.tar.gz4.创建wordpress数据库mysql -uroot -pcreate原创 2017-06-17 16:44:43 · 941 阅读 · 0 评论 -
parse_url()解析 URL,返回其组成部分
$url = 'http://username:password@hostname/path?arg=value#anchor';print_r(parse_url($url));echo parse_url($url, PHP_URL_PATH);?>Array( [scheme] => http [host] => hostname转载 2017-07-23 16:08:16 · 1579 阅读 · 0 评论 -
php中urldecode和urlencode的具体使用
1、urlencode()函数原理就是首先把中文字符转换为十六进制,然后在每个字符前面加一个标识符%。urldecode()函数与urlencode()函数原理相反,用于解码已编码的 URL 字符串,其原理就是把十六进制字符串转换为中文字符。2、使用场景:公司项目(搜索条件的数据传输,从一个页面到另外一个页面)://serialize将数组转化为字符串,不用implode是因为有关转载 2017-07-23 16:21:55 · 6890 阅读 · 0 评论 -
PhpStorm在上传文件的时候提示 Upload to 虚拟机 failed: invalid descendent file name "\".
原因:用vim 修改虚拟机文件的时候,生成了\\这个文件,原创 2017-08-01 15:09:25 · 1815 阅读 · 0 评论 -
PHP生成zip压缩包
将一个文件生成一个压缩包:php$path = "c:/wamp/www/log.txt";$filename = "test.zip";$zip = new ZipArchive();$zip->open($filename,ZipArchive::CREATE); //打开压缩包$zip->addFile($path,basename($path)); //向压缩包中转载 2017-11-09 08:52:31 · 440 阅读 · 0 评论 -
thinkphp多条件查询(AND, OR)
SELECT * FROM `ecs_order_info` WHERE ( ( `order_status` = 5 AND `shipping_status` = 2 ) OR `order_status` = 6 ) AND `user_id` = 1上面标红的where查询语句在TP中的拼接如下: $order=M('order_info'); $where['转载 2017-10-24 17:47:32 · 19706 阅读 · 0 评论 -
php替换多个子库str_replace函数
把字符串的不同字符替换为对应字符echo str_replace(['a','b'], ['c','d'], "aabbccdd");ccddccddecho str_replace(['a','b'], ['c'], "aabbccdd");ccccddecho str_replace(['a','b'], 'c', "aabbccdd");ccccccdd原创 2017-10-25 12:42:56 · 351 阅读 · 0 评论 -
PHP sprintf函数
用处:把字符串进行多种类型的格式化用于:处理xml数据格式时,需要用到他来格式化等等echo sprintf('%05d', 12);结果:00012原创 2017-12-20 11:09:26 · 277 阅读 · 0 评论 -
php 解决json_encode中文UNICODE转码问题
用PHP的json_encode来处理中文的时候, 中文都会被编码, 变成不可读的, 类似”\u***”的格式,如果想汉字不进行转码,这里提供三种方法 1.升级PHP,在PHP5.4, 这个问题终于得以解决, Json新增了一个选项: JSON_UNESCAPED_UNICODE, 故名思议, 就是说, Json不要编码Unicode.<?phpecho json_encod转载 2017-12-20 14:17:36 · 423 阅读 · 0 评论 -
PHP empty、isset、innull的区别
PHP empty、isset、isnull的区别empty如果 变量 是非空或非零的值,则 empty() 返回 FALSE。换句话说,”"、0、”0″、NULL、FALSE、array()、var $var、未定义;以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。isset如果 变量 存在(非NULL)则返回 TRUE,否则返回 F原创 2017-12-26 11:35:19 · 380 阅读 · 0 评论 -
git 提示:error: unable to rewind rpc post data - try increasing http.postBuffer
把项目fork下来,加入本地项目,当push到源仓库的时候,出现如下问题:git -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree push -v --tags origin refs/heads/develop:refs/heads/develop Pu转载 2017-12-18 21:20:05 · 12265 阅读 · 2 评论 -
PHPstorm实现PHP代码直接运行,并动态更新服务器代码
phpstorm 映射本地服务器转自:http://blog.csdn.net/kingqiji01/article/details/64438754转载 2017-12-18 21:22:39 · 869 阅读 · 0 评论 -
symfony4目录结构
symfony目录结构:- project - d bin 可执行文件目录 - d config 配置 - d public 入口文件 - d src 应用 - d templates 模板 - d var 缓存、数据、日志 - d vendor 组件转载 2018-01-23 15:03:44 · 1403 阅读 · 0 评论 -
PHP AES双向加密解密(128位)
/** 用法: Security::encrypt($str,$key); Security::decrypt($str,$key); */ class Security { public static function encrypt($input, $key) { $size = mcrypt_get_block_size(MCRYP转载 2018-01-07 16:20:46 · 4454 阅读 · 0 评论 -
PHP curl post的content-type导致获取不到数据的问题
$url="http://www.otcmarkets.com/edgar/ajax/GetFilings.json";$keysArr = array( "symbol"=>"FSCND", "body"=>"[object HTMLDivElement]", "progressBarBody"=>"[object HTMLQuoteElement]",转载 2018-01-25 09:13:53 · 9499 阅读 · 0 评论 -
PhpStorm直接连接服务器代码
原创 2018-01-18 08:58:46 · 2271 阅读 · 0 评论 -
centos7 lnmp YUM更新php
1.检查当前安装的PHP包 yum list installed | grep php如果有安装的PHP包,先删除他们 yum remove php.x86_64 php-cli.x86_64 php-common.x86_64 php-gd.x86_64 php-ldap.x86_64 php-mbstring.x86_64 php-mcrypt.x86_64 ph...转载 2017-06-17 15:44:41 · 333 阅读 · 0 评论 -
Linux 上的Symfony4.0安装
Symfony4.0与之前的版本安装还是很不同的,过程如下:1.安装Symfony Installer首先查看一下php版本,因为Symfony要求php 7.1以上:php -v然后执行: sudo curl -LsS https://symfony.com/installer -o /usr/local/bin/symfony sudo chmod a+x /usr/local/bin/s原创 2018-01-11 16:03:53 · 704 阅读 · 0 评论 -
Git基本操作
# 克隆$ git clone 地址# 列出所有本地分支$ git branch# 创建本地分支$ git branch 名字# 主分支更新$ git pull# 切换到指定分支$ git checkout liuyanan# 将master主分支合并到当前分支$ git merge master# 添加指定文件到暂存区$ git add [file1] [f原创 2018-01-29 17:42:30 · 276 阅读 · 1 评论 -
Symfony的Console组件的简单使用。
1.进入项目路径:cd ~/web/project/2.安装Console组件:composer require symfony/console @stable3.创建自己的代码目录:mkdir -p src/Mycmd # 创建自己的代码目录4.注册命名空间:编辑 composer.json 文件如下,然后在命令行输入composer dump-autoload :{ "require":...转载 2018-02-11 15:01:00 · 1037 阅读 · 0 评论 -
运行composer udpate出现ssl错误
今天在执行composer udpate时候,出现报错如下:网上查了一下,发现是没有安装CA证书导致的!!!CA证书下载地址:http://curl.haxx.se/docs/caextract.html然后修改php.ini,openssl.cafile = /xxxx/xxxx/cacert.pem(证书所在路径),好composer update 正常!...原创 2018-04-23 22:09:52 · 767 阅读 · 0 评论 -
PHP DateTime 对象和 Date 函数
DateTime对象<?php //设置时间时区 date_default_timezone_set('PRC'); $dateFormat = "Y-m-d"; $dateTimeFormat = "Y-m-d H:i:s"; //获取当前时间 $date = new DateTime(); echo $date->format($dateTimeFormat) . "\n"; ...转载 2018-05-14 15:45:21 · 6185 阅读 · 0 评论 -
PHP float转int 失真的问题
在工作中遇到个问题:支付后的返回值是以分为单位,数据库以元作为单位的,所以用的float;返回的时候比如是3980, 数据库数据是39.80,直接用这个数据乘100会变成3980;网上查了一下,发现php在float是弱类型,对于整数或者经过运算以后结果是整数的浮点数,php能当作整数对待,但类型还是浮点型不变。但如果经过运算以后不是整数,那php就把结果当作严格的浮点数对待了。...原创 2018-08-20 11:27:07 · 1108 阅读 · 0 评论