php
筑梦悠然
The running of life depends on the perseverance in the journey, rather than momentary outburst.
人生的奔跑,不在于瞬间的爆发,而取决于途中的坚持!
展开
-
php生成csv文件,完美解决乱码和失真
//生成csv文件,完美解决中文乱码和大数据失真问题if(!function_exists('toCSV')) { function toCSV(array $data, array $colHeaders, $asString = false) { $stream = ($asString) ? fopen("php://temp/maxmemory", "w+") //生成临时csv : fopen("php://output".原创 2021-08-06 22:03:10 · 515 阅读 · 0 评论 -
呀,写了个死循环
写了个热乎乎的死循环:起初是调用接口拿数据,但是接口查询条数有限制,限制每次只能查$pageSize条。这里有个问题,如果$searchKeyArr是空数组,那么计算出来的$batchNum=0,而$pageNo从1开始不断累加,这样$pageNum永远不可能等于$batchNum,造成了死循环。修改如下:function MySolution(array $searchKeyArr) { $pageNo = 1; $pageSize = 10; $batchNum = ...原创 2021-05-29 12:00:09 · 205 阅读 · 0 评论 -
PHP内存溢出和内存泄漏的区别
目录一、定义1、内存溢出(out of memory):不够用2、内存泄露(memory leak):已申请的无法释放二、出现场景1、内存溢出1类:大数据创建或拷贝2、内存泄漏4类:3、隐式内存泄漏:无用数据未释放+配置不合理(fpm+常驻进程)三、PHP内存管理:引用计数+垃圾回收的回收周期1、php函数获取当前程序内存使用情况:memory_get_usage()与memory_get_peak_usage()2、PHP5.2及以前版本:引用计数一、定义.转载 2020-12-29 23:53:45 · 872 阅读 · 0 评论 -
面向对象的4大特性+组合替换继承
面向对象的四大特性:封装、抽象、继承、多态文章目录一、封装1、定义2、使用原因二、抽象1、定义2、实现方式三、继承1、定义2、优缺点3、多重继承的优缺点3.1、多重继承的优点:多继承,可以调用多个基类的不同方法3.2、多重继承的缺点:多继承的类,如果调用基类的基类中的方法,容易造成歧义3.3 解决方案四、多态1、定义2、好处一、封装1、定义也叫:信息隐藏或数据访问保护,使用protected和private关键字。2、使用原因A.如果对类属性访问不做控制,任何代码都可访问和修改,虽灵活但也意味着转载 2020-09-28 20:47:34 · 899 阅读 · 0 评论 -
【坑死人不偿命】mac安装php设置timezone失败问题解决
我对灯发誓,我真的去修改php7.2对应的php.ini文件,在改了这句date.timezone = "Asia/Shanghai"并且也重启成功了php7.2,但是就是没奏效。想着我mac电脑是不是php版本问题。实际运行奏效的phpMacBook-Pro ~ % php -vPHP 7.3.11mac自带的php版本MacBook-Pro ~ % /usr/bin/php -vPHP 7.3.11我自己安装的php版本MacBook-Pr...原创 2020-05-13 22:42:03 · 396 阅读 · 0 评论 -
抽象类与接口的区别
相同点:1、自身都不能实例化,只能通过子类继承抽象类、子类实现接口。2、继承抽象类和实现接口的类必须实现其中的所有抽象方法(抽象类的abstract开头的方法是抽象方法,接口的所有方法都是抽象方法)。不同点:1、抽象类可以有自己的普通数据成员,也可以有非abstarct的成员方法,只要这个类至少含有一个抽象方法,就叫这个类为抽象类。 而在interface中,只能够有静态的不能...转载 2017-04-06 13:22:16 · 436 阅读 · 0 评论 -
php取数组中不存在的属性
在写接口的时候,经常会取数组内容,尤其是在foreach轮循着的时候,但是有的数组有这个属性,有的数组同一个属性却不存在,或者该数组就直接是空数组或者NULL,怎样获取数组的属性又不会报错呢?当数组为空时,怎样保证取数组内容时不会报错呢?直接上代码,有码有真相。$b = [ 'b1' => $a['a1']??'a1无', 'b2' => !empty($a[...原创 2020-02-13 15:48:58 · 1980 阅读 · 0 评论 -
PDO最全面的疑难杂症汇总
1、功能:pdo主要是用来对数据库访问的。不同数据库在访问时,采用相同方法名称,解决了数据库连库不统一问题。传统各个数据库的连库方式:mysql_connect —-mysqloci_connect —-oracledbase_open ——dbasepdo的连库方式:$db = new PDO("mysql:host=localhost;dbname=数据库名","用户名","密...转载 2020-02-02 14:03:02 · 604 阅读 · 0 评论 -
php require()和include()的区别
相同点:(1)都是包含并运行指定文件;(2) php5以后都是有条件包含(php5的include有条件包含require无条件包含);(3) 都是语言结构,不是真正的函数;不同点:(1) incluce在用到时加载,require在一开始就加载,_once后缀表示已加载的不加载;(2) PHP系统在加载PHP程序时有一个伪编译过程,可使程序运行速度加快。但incluce的文档仍为解释...转载 2020-01-30 22:32:13 · 235 阅读 · 0 评论 -
php版本切换的详细过程+线上Linux环境下常见php-fpm常见问题
一、php版本切换(1)检测是否切换成功判断是否切换成功的2个绝对正确的方法(推荐第一种):1、ps -ef|grep php2、写个php文件 <?php echo phpinfo(); ?>(2)已有的版本切换切换php版本2步走注意:php72和php70,对应的fpm是php-fpm和php-fpm70,对应fpm的配置文件www.c...原创 2018-04-03 10:55:06 · 3851 阅读 · 0 评论 -
查看nginx和php的编译参数
在已经编译安装好的nginx和php的server上是可以查看之前编译时候的参数的,方法如下。1、查看nginx的编译参数# nginx -Vnginx version: nginx/1.9.4built by gcc 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC) configure arguments: --prefix=/usr/loca...转载 2018-03-30 18:38:08 · 990 阅读 · 0 评论 -
PHP编译安装 PHP各编译参数配置详解
php编译安装的基本步骤//首先要下载一个php的安装包,例如:php-5.6.25.tar.gz,tar zxvf php-5.6.25.tar.gz // 解压php安装包,得到一个php-5.6.25的文件夹cd php-5.6.25 ./configure //对php的安装进行配置,后面要加配置选项# make && mak...转载 2018-04-03 11:03:29 · 2614 阅读 · 0 评论 -
PHP提取第一张图片+生成缩略图+图片添加水印
PHP获取网站文章的第一张图片<?php //调用文章首张图片,如果文章没有图片就调用默认图片no-image.jpg$pattern="/<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.jpg|\.png]))[\'|\"].*?[\/]?>/"; $content = $article->Content; //文章内容 preg_match_all($pa转载 2017-03-11 01:56:16 · 680 阅读 · 0 评论 -
mac 安装使用composer安装依赖库vendor
1、安装composer:brew install composer composer config repo.packagist composer也可以采用下面的两种方式安装https://pkg.phpcomposer.com2、composer安装依赖库vendorcd到项目目录下,ls -l看下compo原创 2018-01-09 11:02:18 · 1745 阅读 · 0 评论 -
php常用函数最全总结
PHP常用函数总结常用函数 echo()【语言结构】 print()//【语言结构】【有返回值】,若传输失败导致没有输出,它返回false var_dump() var_export()【有返回值,翻译一个合法的PHP代码】 printf()//类似与C语言的形式 printf("my name is %s, age %d", $name, $age);...原创 2017-10-09 17:26:08 · 6327 阅读 · 0 评论 -
记录一个巨大的坑(未完,后续补数据和解释)
//第一种$entireArray[$org->treeLevel4Code]['code'] = $org->treeLevel4Code;$entireArray[$org->treeLevel4Code]['submenu'][$org->parentOrgCode]['code'] = $org->parentOrgCode;$entireArray[$org->treeLevel4原创 2018-05-07 20:19:50 · 259 阅读 · 2 评论 -
php匿名函数与闭包+kafka中匿名函数的使用
//匿名函数实际上相当于把函数当做变量,不需要专门去定义一个函数。// 在匿名函数出现之前,如果想把函数当做变量传递,得用字符串的形式$funcname=function ($param) {echo $param;}$funcname('test1');function normal(){ echo &amp;quot;world&amp;quot;;}function testAnonymous($f...转载 2018-05-21 10:50:05 · 517 阅读 · 1 评论 -
static::与new static()之后期静态绑定
一、parent、self、$this、__CLASS__class A {}class B extends A{ parent::(public|protected)(静态方法|静态变量) ===> parent永远是A self::(public|protected)(静态方法|静态变量) ===> self永远是B $this->(public|protected)(非...原创 2018-06-12 09:53:16 · 1582 阅读 · 0 评论 -
php5反射机制
class A{ public $one = ''; public $two = ''; //Constructor public function __construct($a='aa', $b=0) { //Constructor } //print variable one public f...原创 2018-06-13 10:39:20 · 190 阅读 · 0 评论 -
详解break与continue、break n与continue n
break是结束整个循环体,continue是结束单次循环break num是结束外层第num层整个循环体,continue num 是结束外层第num层单次循环//例1for($i=2;$i>0;$i--){ for($j=0;$j<2;$j++){ for($k=10;$k<14;$k++){ if($k>12) continue 2; echo $...原创 2018-05-31 10:12:38 · 1360 阅读 · 1 评论 -
mysql慢查询 + explain使用及返回的参数详解
一、mysql慢查询(1)慢查询参数说明slow_query_log 慢查询开启状态slow_query_log_file 慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般设置为MySQL的数据存放目录)long_query_time 查询超过多少秒才记录log_queries_not_using_indexes 设置为ON时,可以捕获到所有未使用索引的SQL语句(2)查看慢...转载 2018-06-08 16:58:49 · 765 阅读 · 0 评论 -
php及php变量的生命周期、Laravel生命周期、Yii2生命周期、ThinkPHP生命周期
一、php生命周期(5块)模块初始化阶段 --- php_module_startup()请求初始化阶段 --- php_request_startup()执行脚本阶段 --- php_execute_script()请求关闭阶段 --- php_request_shutdown()模块关闭阶段 --- php_module_shutdow...原创 2018-06-09 23:07:56 · 4907 阅读 · 2 评论 -
php获取上周、本周、上月、本月的起止日期
//mktime(时,分,秒,月,日,年)//date(format,timestamp),其中format常用有如下选项:Y - 年份的四位数表示m - 月份的数字表示(从 01 到 12)d - 一个月中的第几天(从 01 到 31)H - 24 小时制,带前导零(00 到 23)i - 分,带前导零(00 到 59)s - 秒,带前导零(00 到 59)w - 星期几的数字...原创 2018-03-21 20:40:53 · 3333 阅读 · 0 评论 -
【面试】Restful动词中post,patch,put的区别?什么是安全?什么是幂等?哪些动词符合安全幂等?
HTTP协议本身是一种面向资源的应用层协议,但对HTTP协议的使用实际上存在着两种不同的方式:一种是RESTful的,它把HTTP当成应用层协议,比较忠实地遵守了HTTP协议的各种规定;另一种是SOA的,它并没有完全把HTTP当成应用层协议,而是把HTTP协议作为了传输层协议,然后在HTTP之上建立了自己的应用层协议。本文所讨论的HTTP幂等性主要针对RESTful风格的,不过正如上一节所看到的那...原创 2019-06-11 10:58:10 · 1763 阅读 · 1 评论 -
Yii-Laravel-ThinkPHP框架的比较
整体说起来yii比较好。yii优点:轻量级,缓存好,负载能力强,有很多实现方法很好地避免对php扩展的依赖,执行性能比TP高,等等。缺点:配置复杂tp优点:社区很火爆,中文的新手教程很详细,比较容易上手。缺点:BUG多。跟yii不是一个量级的。yii用配置和组件等方式的效果是,你要什么他就给你什么(重点是你会不会配置,所以难学),tp就是什么都弄好了,看起来什么都好原创 2017-12-11 11:06:24 · 4412 阅读 · 0 评论 -
oracle数据库的连接+增删改查操作
连接oracle数据库并使用$conn = oci_connect('账号', '密码', "(DEscriptION=(ADDRESS=(PROTOCOL =TCP)(HOST=连接oracle的ip地址)(PORT = 端口号))(CONNECT_DATA =(SID=HCMPRD2)))", "utf8"); $query = oci_parse($conn, "select转载 2018-02-07 11:47:11 · 914 阅读 · 0 评论 -
利用SMTP发送验证验证
第一步打开编辑器新建一个HTML文件来写表单,代码如下:PHP用户注册邮箱验证激活帐号.demo {margin: 20px auto; width: 400px; border: 1px solid #ccc; line-height: 50px;text-align: center;}.input {width: 150px; height: 25px;转载 2017-06-05 13:29:39 · 3081 阅读 · 0 评论 -
ThinkPHP 模板标签
转自:http://www.5idev.com/thinkphp一、ThinkPHP 模板判断输出 If ... Else 标签if ... else 标签用于进行复杂的条件判断,格式如下: 输出的内容1输出的内容2输出的内容3expr1可以是单个表达式或多个表达式的组合,如: 例子:管理员群众游客condition 条件condition转载 2017-05-13 15:37:19 · 1052 阅读 · 1 评论 -
session和cookie的内部原理
PHP 的COOKIE cookie 是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制。 PHP在http 协议的头信息里发送cookie,因此 setcookie()函数必须在其它信息被输出到浏览器前调用,这和对header()函数的限制类似。$value = 'something from somewhere'; setcookie("TestC转载 2017-04-06 12:56:55 · 2460 阅读 · 1 评论 -
js和php获取当前页面URL的各项参数
javascript实现:top.location.href 顶级窗口的地址this.location.href 当前窗口的地址PHP实现:#测试网址1:http://localhost/blog/testurl.php?id=5#测试网址2:http://test.xf.com/index.php/show/game/?aid=12(假设配置的端口号为8080)//获取域名或主机地址:$转载 2017-03-08 15:06:32 · 8384 阅读 · 0 评论 -
mysql数据库连接+mysql_fetch_array(),mysql_fetch_row(),mysql_fetch_assoc()区别
法一:<?php $db_host = 'localhost';$db_user = 'root';$db_password = '123456';$db_name = 'test';$con = mysql_connect($db_host, $db_user, $db_password) or die(mysql_error());mysql_select_db($db_name,原创 2017-03-11 22:21:00 · 286 阅读 · 0 评论 -
PHP页面静态化
PHP静态化:就是使网站生成页面以静态HTML的形式展现在访客面前,PHP静态化分纯静态化和伪静态化,两者的区别在于PHP生成静态页面的处理机制不同。 真静态的3种方式: 1、利用PHP模板生成静态页面 PHP模板实现静态化非常方便,比如安装和使用PHP Smarty实现网站静态化。 2、使用PHP文件读写功能生成静态页面<? //基于Yii框架为例// $template = 'D转载 2017-03-11 13:09:43 · 331 阅读 · 0 评论 -
PHP分页机制
<?phpclass page{ private $infocount;//信息总数 private $pagesize;//每页数量 private $pagecount;//页面总数 private $currpage;//当前页面 function __construct($ifcount,$pgsize,$pgcount=1,$cupage=1){ $原创 2017-03-09 14:26:41 · 287 阅读 · 0 评论 -
日志文件整理(PHP面试题)
请将日志文件20150710.log按照时间对每行进行排序,如果时间已经出现过一次,再出现相同的时间用”\t”替换。(日志文件第一列为时间戳)<?php /** * 第1步:load 函数 *把日志文件的每一行写入数组并返回 */function load($file) { $handle = fopen($file,'r') or die('打开文件失败');//打转载 2017-02-27 14:30:42 · 410 阅读 · 0 评论 -
PHP写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。
<?php //狭义上来说,目录就相当于一个文件夹,里面含有文件和文件夹,其中里面的文件夹又是一个目录,所以涉及到递归操作function xf_scandir($dir){ $files = array(); if( $handle=opendir($dir) ){ //$handle=Resource id #3原创 2017-02-23 23:52:08 · 2120 阅读 · 0 评论 -
(PHP面试)数猴子(原型:约瑟夫环)
约瑟夫环:递归算法 假设下标从0开始,0,1,2 .. m-1共m个人,从1开始报数,报到k则此人出环自杀,问最后剩下的一个自杀的人编号是多少?百度了好久好久,大家写的不是特别全面,导致我眼花缭乱,折腾了几天几夜,郁闷+++,终于把结果死和过程死的递归过程弄明白了。。。 #include<iostream>using namespace std;int Joseph1(int转载 2017-03-03 08:26:45 · 1309 阅读 · 0 评论 -
array+array 与 array_merge() 遇到重复键名的处理、Yii2或Laravel的merge()与array_merge()区别联系
一、键名杂乱,有的无键名 1)键名为数字时,array_merge()不会覆盖掉原来的值,但+合并数组则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉(不是覆盖) 2)键名为字符时,+仍然把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉,但array_merge()此时会覆盖掉前面相同键名的值 &lt;?php $a...转载 2017-02-23 17:57:31 · 4272 阅读 · 0 评论 -
php文件存储时的编码格式--utf8无BOM
今天遇到一个问题,同样的控制器方法,内容完全一样,json编码后的结果都是如下:[{"appid":"1139709444","keyword":"\u8db3\u7403\u7ade\u731c","rank":"1"}] [{"appid":"1139709444","keyword":"\u8db3\u7403\u7ade\u731c","rank":"1"}]但是一个可以b原创 2017-06-23 14:25:52 · 1178 阅读 · 0 评论 -
json格式解析
JSON建构于两种结构: 1. “名称/值”对的集合(A collection of name/valuepairs)。不同的语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。2. 值的有序列表(An o原创 2017-05-23 11:07:40 · 407 阅读 · 0 评论 -
常用php数组处理函数封装的类,类似ArrayHelper
<?phpclass ArrayToolkit{ //筛选数组,返回关键词搜索的结果 public static function search($list,$sk=''){ $result=[]; if(empty($sk)){ return $list; } foreach ($list as $key =...原创 2018-03-23 18:17:31 · 559 阅读 · 0 评论