php
文章平均质量分 92
阿威,awin
纸上得来终觉浅,绝知此事要躬行
展开
-
用selenium+php-webdriver实现抓取淘宝页面
用selenium+php-webdriver实现抓取淘宝页面by Minirplus on 2015-05-08 in DEV功能:实现抓取淘宝店铺商品信息,绕过淘宝防抓取策略环境Windows 8.1selenium-2.44.0ChromeDriver 2.15php-webdriverChrome安装selenium在http://selenium-release.storage.googleapis.com/index.html找到最新的版本,下载selenium-server原创 2020-06-03 15:50:06 · 2396 阅读 · 0 评论 -
PHP 底层的运行机制与原理
PHP 底层的运行机制与原理PHP说简单,但是要精通也不是一件简单的事。我们除了会使用之外,还得知道它底层的工作原理。PHP是一种适用于web开发的动态语言。具体点说,就是一个用C语言实现包含大量组件的软件框架。更狭义点看,可以把它认为是一个强大的UI框架。了解PHP底层实现的目的是什么?动态语言要像用好首先得了解它,内存管理、框架模型值得我们借鉴,通过扩展开发实现更多更强大的功能,优化我们...转载 2020-03-10 13:00:47 · 202 阅读 · 0 评论 -
http header php header使用和笔记
//定义编码header( 'Content-Type:text/html;charset=utf-8 '); //Atomheader('Content-type: application/atom+xml'); //CSSheader('Content-type: text/css'); //Javascriptheader('Content-type: text/java...原创 2020-01-21 16:10:04 · 144 阅读 · 0 评论 -
整理--针对强类型语言自动转换数据类型--自动对数据验证类型并过滤
/** * 自动对数据验证类型并过滤 * @param $data $data 要过滤的数据。支持String|Number|array * @param bool $str_to_int 数字字符串是否需要转为整形 * @param bool $decode 是否逆解析数据 * @param string $default 为null的默认值 * @return ar...原创 2020-01-08 15:42:00 · 214 阅读 · 0 评论 -
php 实现 tail -f的功能
php 实现 tail -f的功能#!/usr/local/php/bin/php<?phpif (2 != count($argv)) { fwrite( STDERR, "调用格式错误!使用格式 ./tail filename".PHP_EOL ); return 1;}$file_name = $argv[1];...原创 2020-01-08 15:10:33 · 664 阅读 · 0 评论 -
php 不阻塞执行的方式总结,这些是基础的
php 用linux 后台不阻塞执行 脚本文件 nohup cp 大文件 /目录shell_exec("nohup php /vagrant/html/cli.php /order{$v['id']} {$k} > /dev/null 2>&1 &");php fastcgi_finish_request 此函数冲刷(flush)所有响...原创 2020-01-06 14:43:42 · 1036 阅读 · 0 评论 -
php cli 输出带有颜色的字体
class FormatOutput{ private $log = ''; private $start = ''; private $end = "\033[0m"; private $cli = true; private $color = ''; private $background = false; public funct...原创 2020-01-06 14:35:56 · 856 阅读 · 0 评论 -
缓存穿透,大面积key失效的解决方案
缓存穿透,大面积key失效的解决方案<?phpclass cacheBreakdown{ public $redis; public $queueName = 'queue_name'; public $error = ''; public $surviveTime = 20;//存活时间,以秒计算 //总共有两种解决方案 ...原创 2019-12-26 14:15:03 · 422 阅读 · 1 评论 -
生成不会重复的订单号码 不会重复 订单号
<?php/** * 生成不会重复的订单号 * @param mixed|null $prefix * 为null的时候没有前缀, * 为空字符串的时候,按年计算前缀,34年不会重复 * @param bool $bigOrder * 为false的时候表示订单量较小 * 为true的时候表示订单量较大 * @return s...原创 2019-12-25 17:38:16 · 323 阅读 · 0 评论 -
php提示 No input file specified 错误的解决办法
php提示 No input file specified 错误的解决办法原理任何对.php文件的请求,都简单地交给php-cgi去处理,但没有验证该php文件是否存在。PHP文件不存在,没办法返回普通的404错误,它返回 一个404,并带上一句”No input file specified”另外,还可能跟 路径或者 权限有关系,或者SCRIPT_FILENAME 变量没有被正确的...原创 2019-12-20 16:26:23 · 11797 阅读 · 0 评论 -
设计模式- 模板模式
本文为大家介绍的是php设计模式中的 Template (模板模式)示例代码,感兴趣的同学参考下。定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构可以定义该算法的某些特定步骤继承关系由于自身的缺陷,被专家们扣上了“罪恶”的帽子。“使用委派关系代替继承关系”,“尽量使用接口实现而不是抽象类继承”等等专家警告,让我们这些菜鸟对继承“另眼相看”。其实,继承还是有很...原创 2019-12-20 15:33:04 · 80 阅读 · 0 评论 -
一个很简单的协程任务调度demo
<?phpclass Task{ protected $taskId; protected $coroutine; protected $sendValue = null; protected $beforeFirstYield = true; public function __construct($taskId, Generator $cor...原创 2019-12-18 14:19:58 · 196 阅读 · 0 评论 -
设计模式- 组合模式
<?php/** * 组合模式 * * 将对象组合成树形结构以表示"部分-整体"的层次结构,使得客户对单个对象和复合对象的使用具有一致性 */abstract class MenuComponent{ public function add($component) { } public function remove($componen...原创 2019-12-18 11:50:23 · 99 阅读 · 0 评论 -
php库和资源
PHP开发资源速查表依赖管理Composer Installers - 一个多框架Composer库安装器Composer/Packagist - 一个包和依赖管理器Melody - 一个用于构建Composer脚本文件的工具Pickle - 一个PHP扩展安装器Composed - 一个在运行时解析你项目Composer环境的库Composer Checker - 一个校验Comp...原创 2019-12-18 09:35:40 · 1265 阅读 · 0 评论 -
php 取余的一些笔记
取模5 mod 3 = 2-5 mod 3 = 15 mod -3 = -1-5 mod -3 = -2取余5 rem 3 = 2-5 rem 3 = -25 rem -3 = 2-5 rem -3 = -2取余,遵循尽可能让商大的原则取模,遵循尽可能让商小的原则经过测试,在C/C++, C#, JAVA, PHP这几门主流语言中,’%’运算符都是做取余运算,而在pytho...原创 2019-12-13 11:11:07 · 596 阅读 · 0 评论 -
预先生成一些随机的令牌
<?php//生成令牌$arr = range(100, 999);//shuffle 打乱令牌shuffle($arr);//防止存入信息过长。信息分块存储$arr = array_chunk($arr, 10);$redis = new \Redis();$redis->connect('192.168.168.30');$redis->auth('red...原创 2019-12-12 16:42:08 · 146 阅读 · 0 评论 -
redis 实现消息队列的代码。
redis 实现消息队列的代码。<?phpini_set('default_socket_timeout', -1);try{ $redis = new \redis(); $redis->pconnect('127.0.0.1'); $redis->setOption(\Redis::OPT_READ_TIMEOUT, -1); $redi...原创 2019-12-10 11:55:06 · 310 阅读 · 0 评论 -
2.0 php写的服务器,升级版本
2.0 php写的服务器,升级版本支持信号处理使用的是epoll io复用模型事件监听。<?php/** * Created by PhpStorm. * User: Sixstar-Peter * Date: 2018/11/14 * Time: 21:04 */class Server{ private $_mainSocket; private ...原创 2019-12-10 09:14:33 · 73 阅读 · 0 评论 -
1.0 php写的一个简单的多进程服务器
php写的一个简单的多进程服务器。<?phpclass server{ public $port; public $ip; protected $server; public function __construct($ip = '0.0.0.0', $port) { $this->ip = $ip; ...原创 2019-12-10 09:08:23 · 114 阅读 · 0 评论 -
php.ini 中文翻译
这个文件控制了PHP许多方面的观点。为了让PHP读取这个文件,它必需被命名为; &ACUTE;PHP.INI&ACUTE;。PHP 将在这些地方依次查找该文件:当前工作目录;环境变量PHPRC; 指明的路径;编译时指定的路径。; 在WINDOWS下,编译时的路径是WINDOWS安装目录。; 在命令行模式下,PHP.INI的查找路径可以用 -C 参数替代。; 该文件的语法...原创 2019-11-26 09:16:18 · 217 阅读 · 0 评论 -
优化后的冒泡
优化后的冒泡排序function sort_aw($array = array()){ $tmp = 0; //记录最后一次交换的位置 $lastExchangeIndex = 0; //无序数列的边界,每次比较只需要到这里就可以了 $sortBorder = count($array)-1; for...原创 2019-11-25 15:07:47 · 127 阅读 · 0 评论 -
位运算的一些应用
1.判断是否是2的指数function index(int KaTeX parse error: Expected '}', got 'EOF' at end of input: …mber){ if(number <= 0) {return false;}return 0 == (KaTeX parse error: Expected 'EOF', got '&'...原创 2019-11-25 14:58:51 · 77 阅读 · 0 评论 -
laravel 执行流程简单分析 1
1.index.php$app = require_once __DIR__.'/../bootstrap/app.php';$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);$response = $kernel->handle( $request = Illuminate\Http\Reques...原创 2019-11-04 18:16:03 · 520 阅读 · 0 评论 -
阮一峰老大教 如何选择开源许可证?
如何为代码选择开源许可证,这是一个问题。世界上的开源许可证,大概有上百种。很少有人搞得清楚它们的区别。即使在最流行的六种----GPL、BSD、MIT、Mozilla、Apache和LGPL----之中做选择,也很复杂。乌克兰程序员Paul Bagwell,画了一张分析图,说明应该怎么选择。这是我见过的最简单的讲解,只用两分钟,你就能搞清楚这六种许可证之间的最大区别。...转载 2019-11-04 16:39:53 · 206 阅读 · 0 评论 -
类支持数组引用
实现 ArrayAccess 接口 就可以实现数组的方式引用对象类 public function offsetExists($offset); public function offsetGet($offset); public function offsetSet($offset, $value); public function offsetUnset($offset);demo...转载 2019-11-04 11:58:20 · 107 阅读 · 0 评论 -
laravel 组件化开发的笔记
1.第一个难点,就是把本地的组件引入到项目中,进行开发和测试,这个已经解决了就是需要发布组件中的配置文件到项目中3.就是怎么在组建中加载组建中的视图view层视图你需要告诉 laravel 视图的位置才能使 laravel 加载包中的视图。你可以通过服务提供者的 loadViewsFrom 方法。loadViewsFrom 方法接受两个参数:视图的路径和包的名称。比如,如果你的包名称是“...原创 2019-10-31 13:59:57 · 556 阅读 · 0 评论 -
php函数的时间复杂度的收集
用 array_flip之后再使用 array_keys 代替 array_uniquearray_unique 时间复杂度是O(nlogn),array_flip之后再使用array_keys的时间复杂度是O(n)array_key_exists 也是比较快的,可以考虑 array_flip 之后 再array_key_exists 代替 array_search...原创 2019-10-31 13:54:23 · 455 阅读 · 0 评论