
php
wiscourper_
这个作者很懒,什么都没留下…
展开
-
php连接sql server
一、下载扩展程序。原创 2022-07-19 18:07:52 · 5379 阅读 · 0 评论 -
tp配置多数据库
1、在database.php中添加2、另外一套还是用原来的3、测试原创 2022-06-30 19:59:11 · 3338 阅读 · 0 评论 -
php8新特性
一、函数参数1、参数后逗号从 PHP 8.0.0 开始,函数参数列表可以包含一个尾部的逗号,这个逗号将被忽略。这在参数列表较长或包含较长的变量名的情况下特别有用,这样可以方便地垂直列出参数。function takes_many_args( $first_arg, $second_arg, $a_very_long_argument_name, $arg_with_default = 5, $again = 'a default string', //原创 2021-08-19 10:38:44 · 1085 阅读 · 0 评论 -
tp5上传中文文件名
1、修改文件:thinkphp/library/think/File.php找到setSaveName方法:将中文文件名转为utf-8输出给浏览器,大约在127行,加入 if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { $saveName = iconv('gbk', 'utf-8',$saveName); } $this->saveName = $saveName;...原创 2021-08-10 18:03:03 · 861 阅读 · 0 评论 -
外排序
有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M。返回频数最高的100个词大家都清楚的知道1G的文件不可能用1M的内存空间处理。所以我们要按照1M的上限来计算,假设每个单词都为16个字节,那么1M的内存可以处理多少个单词呢? 1M = 1024 KB = 1024 * 1024 B 。然后1M / 16B = 2^16个单词,那么1G大概有多少个单词呢? 有2^26个单词,但是实际中远远不止这些,因为我们是按照最大单词长度算的。我们需要把这1G的单词分批处理,根据原创 2021-05-11 19:02:16 · 665 阅读 · 0 评论 -
php执行过程
Lexing - 将 PHP 代码转换为语言片段 (Tokens)Parse - 将 Tokens 转换成简单而有意义的表达式Compile - 将表达式编译成字节码(OpCode)Excute - 顺次执行字节码,每次一条,从而实现 PHP 脚本的功能。原创 2021-05-11 10:55:16 · 649 阅读 · 0 评论 -
理解Nginx与PHP-FPM通信的工作机制
转自:https://www.jianshu.com/p/da152c6fdfa6了解基本原理浏览器访问网页的过程请求静态页面Browser请求http://xxx.com/aa.html-> Web Server(Nginx/Apache)分发->找到aa.html文件返回给Browser。请求动态脚本Browser请求http://xxx.com/bb...转载 2019-02-22 21:13:08 · 9090 阅读 · 0 评论 -
php-fpm静态和动态执行方式比较及调优
php-fpm的进程数可以根据设置分为动态和静态。静态:直接开启指定数量的php-fpm进程,不再增加或者减少; 动态:开始的时候开启一定数量的php-fpm进程,当请求量变大的时候,动态的增加php-fpm进程数到上限,当空闲的时候自动释放空闲的进程数到一个下限。这两种不同的执行方式,可以根据服务器的实际需求来进行调整。这里先说一下涉及到这个的几个参数吧,他们分别是pm、pm.max_children、pm.start_servers、pm.min_spare_servers和pm.ma.原创 2021-04-27 10:50:03 · 9692 阅读 · 0 评论 -
正则表达式全部特殊符号
字符 描述 \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配 "("。 ^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。 $ 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '\n...原创 2021-04-23 14:26:31 · 3629 阅读 · 0 评论 -
算法题 遇到就码
一、猴子选大王(循环队列)//猴子选大王function monkey($n, $m) { $arr = range(1, $n); $i = 0; while(count($arr) > 1) { $tmp = $arr[$i]; unset($arr[$i]); if(($i + 1)%$m != 0) { $arr[] = $tmp; }// else {// ...原创 2020-05-28 13:36:12 · 9053 阅读 · 0 评论 -
php字符串切割
<!DOCTYPE html><!--To change this license header, choose License Headers in Project Properties.To change this template file, choose Tools | Templatesand open the template in the editor.--><html> <head> <meta ch.原创 2021-04-23 11:52:33 · 862 阅读 · 0 评论 -
mysql无限极分类
CREATE TABLE `tree` ( `id` INT(10) NOT NULL AUTO_INCREMENT, `name` VARCHAR(255) NOT NULL, `lft` INT(10) NOT NULL DEFAULT '0' COMMENT '左节点', `rgt` INT(10) NOT NULL DEFAULT '0' COMMENT '右节点', `status` INT(1) NOT NULL DEFAULT '0' COMMENT '逻辑删除 1是 0否...原创 2021-04-23 11:27:50 · 999 阅读 · 0 评论 -
遍历目录
function getDir($path) { $dh = opendir($path); while(false != ($d = readdir($dh))) { if($d == '.' || $d == '..') { continue; } var_dump($path."/".$d); if(is_dir($path."/".$d)) { getDir($path..原创 2021-04-23 11:24:46 · 619 阅读 · 0 评论 -
无限极分类
$items = array( 1 => array('id' => 1, 'pid' => 0, 'name' => 'a'), 2 => array('id' => 2, 'pid' => 0, 'name' => 'b'), 3 => array('id' => 3, 'pid' => 1, 'name' => 'c'), 4 => array('id' => 4, 'pid' =>...原创 2021-04-23 10:53:07 · 610 阅读 · 0 评论 -
二叉树遍历
$arr = array( 0=>array( "lchild" => 1, "data" => 'a', "rchild" => 2 ), 1=>array( "lchild" => 3, "data" => 'b', "rchild" => 4 ), 2=>array( "lchild" => 5, "data" => 'e', "rch.原创 2021-04-23 10:50:19 · 614 阅读 · 0 评论 -
$POST 、$HTTP_RAW_POST_DATA、phpinput
<?phpecho "<pre>";print_r($_POST);echo '<br>';$data = file_get_contents('php://input'); //都要解下码print_r('php://input '.urldecode($data));echo "<br>";print_r('HTTP_RAW_POST_DATA '.urldecode($GLOBALS['HTTP_RAW_POST_DATA'].原创 2021-04-23 10:47:14 · 641 阅读 · 0 评论 -
php匿名函数
$message = 'hello';// 没有 "use"$example = function () { var_dump($message);};$example();// 继承 $message$example = function () use ($message) { var_dump($message);};$example();// Inherited variable's value is from when the function// is .原创 2021-04-22 18:35:10 · 640 阅读 · 0 评论 -
php序列化接口
自定义序列化的接口。实现此接口的类将不再支持__sleep()和__wakeup()。不论何时,只要有实例需要被序列化,serialize 方法都将被调用。它将不会调用 __destruct() ,除非程序化地调用此方法。当数据被反序列化时,类将被感知并且调用合适的 unserialize() 方法而不是调用 __construct()。如果需要执行标准的构造器,你应该在这个方法中进行处理。接口摘要Serializable{/* 方法 */abstractpublicseri...原创 2021-04-22 16:12:37 · 624 阅读 · 0 评论 -
php 可用的处理函数
可用的处理函数boolval— 获取变量的布尔值 debug_zval_dump— Dumps a string representation of an internal zval structure to output doubleval— floatval 的别名 empty— 检查一个变量是否为空 floatval— 获取变量的浮点值 get_defined_vars— 返回由所有已定义变量所组成的数组 get_resource_id— Returns an integ...原创 2021-04-22 14:20:33 · 588 阅读 · 0 评论 -
php生成器
/*** 生成器* 提供一种简单的方法来实现简单的迭代器,而不用为实现迭代器接口那样去定义复杂的和大开销的类* 允许用foreach来迭代数据集,而不用在内存中建立数组,内存中建立数组会导致内存超限制,并且需要大量的处理时间来生成数组* 切记:生成器函数的执行会延迟到迭代它的结果开始时* 生成器不能够有返回值,这会导致一个编译错误。但空的返回语句在生成器内部是符合语法的,它会终止生成器* 生成器只能迭代一次,不能多次迭代*///eg1:$some_state = 'init...原创 2021-04-22 14:08:51 · 643 阅读 · 2 评论 -
php类与对象(十一)对象比较
PHP 5 中的对象比较要比 PHP 4 中复杂,所期望的结果更符合一个面向对象语言。当使用比较运算符(==)比较两个对象变量时,比较的原则是:如果两个对象的属性和属性值 都相等,而且两个对象是同一个类的实例,那么这两个对象变量相等。而如果使用全等运算符(===),这两个对象变量一定要指向某个类的同一个实例(即同一个对象)。...原创 2021-04-22 11:26:32 · 623 阅读 · 0 评论 -
php类与对象(十)复制
在多数情况下,我们并不需要完全复制一个对象来获得其中属性。但有一个情况下确实需要:如果你有一个 GTK 窗口对象,该对象持有窗口相关的资源。你可能会想复制一个新的窗口,保持所有属性与原来的窗口相同,但必须是一个新的对象(因为如果不是新的对象,那么一个窗口中的改变就会影响到另一个窗口)。还有一种情况:如果对象 A 中保存着对象 B 的引用,当你复制对象 A 时,你想其中使用的对象不再是对象 B 而是 B 的一个副本,那么你必须得到对象 A 的一个副本。对象复制可以通过 clone 关键字来完成(如果可能,原创 2021-04-22 11:13:20 · 636 阅读 · 0 评论 -
php类与对象(九)魔术方法
__construct(),__destruct(),__call(),__callStatic(),__get(),__set(),__isset(),__unset(),__sleep(),__wakeup(),__serialize(),__unserialize(),__toString(),__invoke(),__set_state(),__clone()和__debugInfo()等方法在 PHP 中被称为魔术方法(Magic methods)。在命名自己的...原创 2021-04-22 10:41:23 · 612 阅读 · 0 评论 -
php类与对象(八)重载
PHP所提供的重载(overloading)是指动态地创建类属性和方法。我们是通过魔术方法(magic methods)来实现的。当调用当前环境下未定义或不可见的类属性或方法时,重载方法会被调用。本节后面将使用不可访问属性(inaccessible properties)和不可访问方法(inaccessible methods)来称呼这些未定义或不可见的类属性或方法。所有的重载方法都必须被声明为public。注意:这些魔术方法的参数都不能通过引用传递。注意:PHP中的重载与其.原创 2021-04-22 10:03:17 · 626 阅读 · 0 评论 -
php类与对象(七)面向对象的三大基本特征,五大基本原则
一、三大基本特征:封装、继承、多态1、封装 封装就是隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别,将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。 封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员。2、继承 继承是面向对象的基本特征之一,继承机制允许创建分等级层次的类。继承就是子类继承原创 2021-04-21 20:10:00 · 675 阅读 · 0 评论 -
php类与对象(六)trait
自 PHP 5.4.0 起,PHP 实现了一种代码复用的方法,称为 trait。Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用 method。Trait 和 Class 组合的语义定义了一种减少复杂性的方式,避免传统多继承和 Mixin 类相关典型问题。Trait 和 Class 相似,但仅仅旨在用细粒度和一致的方式来组合功能。 无法通过 trait 自身来实例化。它为传统继承增加了水平特性原创 2021-04-21 19:39:39 · 621 阅读 · 0 评论 -
php类与对象(五)接口
php类不支持多重继承,但php接口支持多重继承interface A { public function get();}interface B { public function set();}interface C extends A, B { public function del();}class AB implements A,B { public function get() { } public funct...原创 2021-04-21 17:23:18 · 564 阅读 · 0 评论 -
php类与对象(四)抽象类
PHP 5 支持抽象类和抽象方法。定义为抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。继承一个抽象类的时候,子类必须定义父类中的所有抽象方法;另外,这些方法的访问控制必须和父类中一样(或者更为宽松)。...原创 2021-04-21 17:10:42 · 595 阅读 · 0 评论 -
php类与对象(三)后期静态绑定
后期静态绑定自 PHP 5.3.0 起,PHP 增加了一个叫做后期静态绑定的功能,用于在继承范围内引用静态调用的类。准确说,后期静态绑定工作原理是存储了在上一个“非转发调用”(non-forwarding call)的类名。当进行静态方法调用时,该类名即为明确指定的那个(通常在::运算符左侧部分);当进行非静态方法调用时,即为该对象所属的类。所谓的“转发调用”(forwarding call)指的是通过以下几种方式进行的静态调用:self::,parent::,static::以及forwa...原创 2021-04-21 16:12:36 · 609 阅读 · 0 评论 -
php常识
1、static 静态方法不能访问非静态成员(属性、方法)2、const 定义常量,(1)前边不加任何修饰符,也不需要$.(2)类内访问self::,类外访问className::(3)const不能在条件语句中定义常量,define()可以(4)const定义的常量不能用表达式,define()可以(5)大小写敏感,define()可以通过第三个参数来定义大小写不敏感的常量(6)define()不能用在类中(7)const采用一个普通的常量名称,define可以采用表达式作为名称。3原创 2021-04-21 11:31:41 · 584 阅读 · 0 评论 -
PHP类和对象(二)访问控制
对属性或方法的访问控制(PHP 7.1.0 以后支持常量),是通过在前面添加关键字public(公有),protected(受保护)或private(私有)来实现的。被定义为公有的类成员可以在任何地方被访问。被定义为受保护的类成员则可以被其自身以及其子类和父类访问。被定义为私有的类成员则只能被其定义所在的类访问。...原创 2021-04-21 11:28:13 · 605 阅读 · 0 评论 -
php类和对象(一)对待对象的方式
PHP 对待对象的方式与引用和句柄相同,即每个变量都持有对象的引用,而不是整个对象的拷贝。$arr = [1,2,3];$obj = new stdClass();$obj->name = "zhangsan";$arr1 = $arr;$arr1[0] = 9;$obj1 = $obj;$obj1->name = "lisi";var_dump($arr[0]);//1var_dump($obj->name);//lisi...原创 2021-04-21 10:29:51 · 576 阅读 · 0 评论 -
php 错误处理函数
debug_backtrace— 产生一条回溯跟踪(backtrace) debug_print_backtrace— 打印一条回溯。 error_clear_last— 清除最近一次错误 error_get_last— 获取最后发生的错误 error_log— 发送错误信息到某个地方 error_reporting— 设置应该报告何种 PHP 错误 restore_error_handler— 还原之前的错误处理函数 restore_exception_handler— 恢复...原创 2021-04-21 10:19:41 · 604 阅读 · 0 评论 -
php魔术常量
__LINE__ 文件中的当前行号。 __FILE__ 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。 __DIR__ 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。 __FUNCTION__ 当前函数的名称。匿名函数则为{closure}。 __CLASS__ 当前类的名称。类名包括其被声明的作用区域(例如Foo\Bar)。...原创 2021-04-20 17:02:40 · 120 阅读 · 0 评论 -
红包代码
<?php$total = 7;//总金额$num = 13;//红包总数$min = 0.01;//红包最小数,可定义$arr = array_fill(0, $num, $min);//用数组表示每人的红包,先设定每个人最小红包,保证每人一定能领到最小的红包$total -= $min * $num;//减去预先分配给众人的最小红包总数while ($total &...原创 2019-02-28 21:35:42 · 1794 阅读 · 3 评论 -
php excel列转整数,整数转列
function int2Excel( $num){ $az = 26; $m = (int)($num % $az); $q = (int)($num / $az); $letter = chr(ord('A') + $m); if ($q > 0) { return int2Excel($q - 1) . $letter; } return $letter;}function excel2Int($str) {...原创 2021-01-14 10:25:18 · 921 阅读 · 0 评论 -
php中从N中取M个数的组合
一、递归//从$input数组中取$m个数的组合算法function comb($input, $m){ if ($m == 1) { foreach ($input as $item) { $result[] = array($item); } return $result; } for ($i = 0; $i <= count($input) - $m; $i++) { $ne...原创 2020-11-26 13:45:36 · 968 阅读 · 0 评论 -
php实现word中折线图的线性趋势线
class TrendLine { private $arr; private $k = 0; private $b = 0; private $num = 0; public function __construct($arr) { if(is_array($arr) && !empty($arr)) { $this->num = count($arr); foreach($arr...原创 2020-11-26 13:36:09 · 1057 阅读 · 0 评论 -
mac 下安装redis
1、下载安装包http://redis.io/download2、解压 安装包redis-6.0.4.tar.gztar -zxv -fredis-6.0.4.tar.gz -C 路径3、cd redis-6.0.4依次执行makemake testmake install安装完毕4、启动redisredis-server5、启动客户端另启一个终端redis-cli...原创 2020-06-09 16:27:36 · 933 阅读 · 0 评论 -
php加密函数
单向:md5() crypt()sha1()双向的:url编码加密 [raw]urlencode ();base64编码加密base64_encode()urlencode ()? => %3F= => %3D空格 => +% => %25& => %26\ => %5C+ => %2Brawurle...原创 2019-03-11 23:02:40 · 688 阅读 · 0 评论