php随记
Ethanhuyi
把技术当兴趣,欢迎关注我的博客交流;曾任职51.com平台后端全栈开发,江西省交科院有限公司前端开发。
展开
-
PHP合成图片怎么保证清晰度(在phpqrcode中生成带Logo的二维码)
在phpqrcode中生成带Logo的二维码保持logo的清晰度:PHP合成图片主要用的的函数 : imagecreatefromstring //返回一个图像标识符,其表达了从给定字符串得来的图像。图像格式将自动检测,只要 PHP 支持:JPEG,PNG,GIF,WBMP 和 GD2。 imageCreatetruecolor //返回一个图像标识符,代表了一...转载 2018-10-26 15:32:05 · 2529 阅读 · 0 评论 -
php 高并发解决(商城抢购问题2)
方案一:使用消息队列来实现可以基于例如MemcacheQ等这样的消息队列,具体的实现方案这么表述吧比如有100张票可供用户抢,那么就可以把这100张票放到缓存中,读写时不要加锁。 当并发量大的时候,可能有500人左右抢票成功,这样对于500后面的请求可以直接转到活动结束的静态页面。进去的500个人中有400个人是不可能获得商品的。所以可以根据进入队列的先后顺序只能前100个人购买成功。转载 2017-05-02 11:53:12 · 6059 阅读 · 0 评论 -
php 高并发解决(商城抢购问题1)
最近在做一个团购项目,遇到个问题,就是在抢购、秒杀、抽奖等活动时,库存数量有限,但是同时下单人数超过了库存数量,就会导致商品超售问题。那么我们怎么来解决这个问题呢,我的思路如下: sql1:查询商品库存if(库存数量 > 0){ //生成订单... sql2:库存-1}当没有并发时,上面的流程看起来是如此完美,假设同时两个人下单,而库存只有1个了,在sql1阶段转载 2017-05-02 11:52:12 · 918 阅读 · 0 评论 -
接收get或post数据使用fwrite写入文件中,方便追踪错误;或其他几种缓存方式
// a+ 以追加以及创建文件的方式打开或创建文件$fp = fopen("./1.log", "a+");//用true使得变量返回,$a = var_export($_GET,true);//echo输出写入到文件中去 (追加)echo fwrite($fp, $a);fclose($fp);原创 2017-03-30 11:52:37 · 844 阅读 · 0 评论 -
配置php.ini文件,关闭错误提示,打开错误日志,设置错误日志路径
配置php.ini文件,关闭错误提示,打开错误日志,设置错误日志路径打开php.ini配置文件;找到display_errors = On;修改为:display_errors = Off;找到log_errors = Off;修改为:log_errors = On;开启日志记录:error_log = "\xampp\apache\logs\php_error原创 2017-03-23 10:30:54 · 12456 阅读 · 0 评论 -
php计算日期间隔天数
1,方法一$datetime1 = date_create('2010-10-11');$datetime2 = date_create('2009-10-13');$interval = date_diff($datetime1, $datetime2);echo $interval->format('%r%a days');2,方法二$date1 = strtoti原创 2017-02-15 11:13:10 · 854 阅读 · 0 评论 -
php设计模式:工厂模式,
1,工厂模式最大的优点是:创建对象。通俗说,以前创建对象需要使用new,现在工厂模式把这个过程封装起来了。假设不使用工厂模式:那么很多地方调用类a,代码就会这样子创建一个实例:new a(),假设某天需要把a类的名称修改,意味着很多调用的代码都要修改。原创 2017-02-22 17:48:28 · 314 阅读 · 0 评论 -
获取玩家是不是在某个时间点在线
//获取玩家是不是在某个时间点在线private function getUserStatusInTime($time){ $numTime = strtotime($time); //20170128 $timeArray = $this->model->getRows('dmz_bill_' . $this->point_in_time . '.logout', "w原创 2017-01-19 16:05:08 · 275 阅读 · 0 评论 -
call_user_func函数和call_user_func_array函数
<?php/** * call_user_func函数类似于一种特别的调用函数的方法,使用方法如下: **/function nowamagic($a, $b){ echo $a; echo $b;}call_user_func('nowamagic', "111", "222");call_user_func('nowamagic', "333", "444");原创 2017-01-17 15:13:09 · 283 阅读 · 0 评论 -
php 获取客户端的真实IP地址 和 检查客户端从什么地方过来的请求
/* * 函数功能: 获取客户端的真实IP地址 * * 为什么要用这个函数? * 因为我们线上Web服务器绝大部分都处于Netscaler(简称NS)后面,客户端访问的地址统一由NS调度 * 由NS调度的访问其实就是NS做了一层代理, 这期间就有一个问题, 因为真实的地址是内部IP请求的 * 当我们的应用去请获取 $_SERVER["REMOTE_ADDR"] 的时候, 得到的就是原创 2017-01-12 11:01:33 · 5985 阅读 · 0 评论 -
php下载文件实例
//excel模板下载public function excelDownload(){ $excelPath = APPLICATION_ROOT . '/document/'; $fileName = "邮件玩家奖励信息表"; $file_name = iconv("utf-8", "gb2312", $fileName); $file_path = $exc原创 2017-01-06 14:33:31 · 492 阅读 · 0 评论 -
ajax改变平台
/** * ajax改变平台 */function change_platform(){ global $G_PLATFORM_CODE; $platform_id = intval($_GET['id']); if(!empty($platform_id) && isset($_SESSION['platform_arr'][$platform_id]))原创 2016-12-27 16:05:57 · 285 阅读 · 0 评论 -
使用递归,从N维数组中取出所需要的那个键名的数组
//递归取function getArray($array, $index){ if(!is_array($array)){ return null; } if(isset($array[$index])){ return $array[$index]; } foreach($array as $item){原创 2016-12-21 14:25:40 · 841 阅读 · 0 评论 -
几种抽奖概率算法
算法一复制代码代码如下:/** * 全概率计算 * * @param array $p array('a'=>0.5,'b'=>0.2,'c'=>0.4) * @return string 返回上面数组的key */function random($ps){ static $arr = array(); $key = md5(serial转载 2016-11-02 18:01:48 · 16416 阅读 · 3 评论 -
全国天气预报数据接口调用PHP示例
全国天气预报数据接口调用PHP示例 (TP)参考网址 : http://www.thinkphp.cn/code/2434.html原创 2016-10-20 21:25:13 · 2294 阅读 · 0 评论 -
curl post get封装
<?php/** * curl post get封装 * @author zhoug * @date 2012-09-11 */class curl { /** * * curl Post数据 * @param $url http地址 * @param $timeout 默认请求超时 * 成功返回字符串 */原创 2016-10-18 16:04:28 · 1223 阅读 · 0 评论 -
curl的另外一种简便写法
$curl = curl_init();curl_setopt_array($curl, array( CURLOPT_PORT => "8080", CURLOPT_URL => "http://121.42.185.57:8080/xservice/safes/5ccf7fc0f2f4/warning", CURLOPT_R原创 2017-05-23 11:29:22 · 972 阅读 · 0 评论 -
php与shell实现自动发布(简单实例)
php中一些函数与shell实现自动发布 以下是shell:原创 2017-05-04 17:36:49 · 1539 阅读 · 0 评论 -
PHP获取两个时间之间的年和月份及间隔天数 PHP两个日期之间的所有日期
[php] view plain copy $time1 = strtotime('2014-02-04'); // 自动为00:00:00 时分秒 两个时间之间的年和月份 $time2 = strtotime('2015-02-06'); $monarr = array(); $monarr[] = '2014-02'; // 当前月; wh转载 2017-05-08 14:18:51 · 9741 阅读 · 0 评论 -
PHP如何保存验证码图片到本地
<?php function GrabImage($url,$filename="") { if($url==""):return false;endif; if($filename=="") { $ext=strrchr($url,"."); if($ext!=".gif" && $ext!=".jpg"):return fal原创 2018-09-03 08:01:51 · 947 阅读 · 0 评论 -
AJAX导出excel文件(后台使用phpexcel插件)
AJAX导出excel文件(后台使用phpexcel插件)前端html:js:后端控制器:服务层logic业务逻辑层进行导出功能原创 2018-06-15 15:10:36 · 4311 阅读 · 0 评论 -
5种常见的设计模式
策略模式简介:策略模式是对象的行为模式,用意是对一组算法的封装。动态选择需要的算法并且使用。策略模式指的是程序中涉及决策控制的一种模式。策略模式功能非常强大。策略模式的三个角色:1,抽象策略角色,2,具体策略角色3,环境角色如果我需要在早晨从家里出发去上班,我可以有几个策略考虑:我可以乘坐地铁,乘坐公交车,走路或其它的途径。每个策略可以得到相同的结果,但是使用了不同的资源。代码:<?phpa...原创 2018-05-04 17:22:30 · 2623 阅读 · 0 评论 -
shell脚本帮助php实现多线程请求
php本身不支持多线程,但是可以利用Linux和apache的多线程能力。1,php+shellphp代码 test.php文件<?php for($i = 0; $i < 10; $i++) { echo $i; sleep(5); //这里为了方便看效果sleep一下让脚本执行时间更长 } ?> shell代码 test.sh文件#!/bi...原创 2018-04-24 23:06:35 · 765 阅读 · 1 评论 -
使用php解析实现二级域名重定向
注册域名后,经常需要实现不同的二级域名访问站点的不同节点一般域名注册机构提供了cname的解析方式,可以吧二级域名定义到不同ip。比如www.abc.com 指向主节点 1.2.3.4bbs.abc.com 指向 1.2.3.4/bbs 或者另一个ip但是网站如果租用托管空间,蛋疼的问题也来了网站只有一个ip,而且网站是租用的托管空间,不是托管主机,不能直接设置不同的访问节点,托管空间只能设置...转载 2018-04-07 00:04:58 · 4013 阅读 · 0 评论 -
PHP_CLI几个系统常量(输出输入流以及参数)
一,$arvg传递给脚本的参数数组;命令行下传递给当前脚本的参数;示例执行执行结果二,STDIN,STDOUT,SRDERR 输出输入流这三个系统常量代表文件句柄;------------------------------------------------------STDIN$fh = fopen('php://stdin','r');原创 2018-01-26 15:48:08 · 1247 阅读 · 0 评论 -
PHP之随机截取汉字
一个汉字会因为编码不同,占的字符数量会不同,会是2或者3个字符! <\?php function getH($str){ // 利用preg_split函数,将汉字字符串拆分成数组,第一个参数是正则匹配,必须加上u,因为是utf8编码 // 这里不能使用substr或者mb_substr等,因为这些方法是转载 2017-11-30 21:12:42 · 1354 阅读 · 0 评论 -
将迭代器中元素(对象)放入数组中
/** * @param $obj * @return array */ public function iterator_array($obj) { $result = []; foreach (\$obj as \$row) { \$result[] = iterator_to_原创 2017-11-19 23:31:06 · 882 阅读 · 0 评论 -
php实现简易的搜索功能
好久没有看代码了,手生了,一直在盘算着转行的事; 1,今天看了一个接手的项目的源代码,发现一小段简易搜索的代码2,/** * 简易搜索 * @param $params * @param $black * @return array */ protected function _commonSearch($params, $bl原创 2017-11-19 16:55:15 · 6603 阅读 · 0 评论 -
php实现页面静态化
PHP文件执行顺序语法解析 => 编译 => 运行动态程序1,连接数据库服务器或者缓存服务器。 2,获取数据 3,填充到模版 4,呈现给用户配置项output_buffering : 开启缓存函数ob_start() : 打开输出缓存 ob_get_contents() : 返回输出缓存区的内容 ob_get_clean():得到当前缓存区的内容并删除当前输出缓存。 ob_clean原创 2017-09-08 16:12:49 · 348 阅读 · 0 评论 -
for和foreach的效率比较
foreach的性能要比for要高;因为for循环要进行一个array.GetLength来获取数组最大下标。 当然只是相对的 1,如果只是读数据,选择foreach 2,如果只是写数据,选择for原创 2017-09-08 10:42:45 · 4632 阅读 · 0 评论 -
nginx+php运行原理(以及nginx和php-fpm)
nginx服务器作用1,前端服务器:负责http请求解析转发,或者处理静态请求。轻量级,并发量高,可以作为反向代理,负载均衡。 应用服务器:负责调用某种语言的解释器,或则某某种语言写的程序,接受http请求,按照开发者意图做出动作,把结果返回给请求。Fastcgicgi:全称common gateway interface 是应用服务器与语言相关的处理程序之间的接口。 处理程序调用这个接口,原创 2017-09-08 09:23:16 · 2496 阅读 · 0 评论 -
curl_init()和curl_multi_init()多线程的速度比较
php中curl_init()的作用很大,尤其是在抓取网页内容或文件信息的时候,例如之前文章curl获得header检测GZip压缩的源代码就介绍到curl_init()的强大。curl_init()处理事物是单线程模式,如果需要对事务处理走多线程模式,那么php里提供了一个函数curl_multi_init()给我们,这就是多线程模式处理事务的函数。curl_init()与cur转载 2017-07-28 17:56:33 · 782 阅读 · 0 评论 -
php中的curl的一些参数总结
curl可以根据是否是http或则是https选择加密发送的内容;使用curl发送请求的基本流程1,初始化连接句柄;2,设置curl选项;3,执行并获取结果;4,释放curl连接句柄;例子://初始化$ch = curl_init();//设置选项curl_setopt($ch,CURLOPT_URL,"http://www.baidu.com");cu原创 2017-07-27 17:55:59 · 1293 阅读 · 0 评论 -
php模拟并发
并发请求理论描述:假设有一个client,程序逻辑是要请求三个不同的server,处理各自的响应。传统模型当然是顺序执行,先发送第一个请求,等待收到响应数据后再发送第二个请求,以此类推。就像是单核CPU,一次只能处理一件事,其他事情被暂时阻塞。而并发模式可以让三个server同时处理各自请求,这就可以使大量时间复用。画个图更好说明问题:前者为阻塞模式,忽略请求响应等时间,总耗时为700转载 2017-07-25 17:16:46 · 664 阅读 · 0 评论 -
php和mysql原生调用存储过程代码段
$sql = DELIMITER $$DROP PROCEDURE IF EXISTS `ss`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `ss`()BEGINIF NOT EXISTS (SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEM原创 2016-11-07 17:36:29 · 1637 阅读 · 0 评论 -
Laravel 阿里大鱼短信接口
配置从终端或命令行进入您的项目目录执行// 拉取阿里大鱼组件composer require iscms/alisms-for-laravel在 config/app.php 的 providers 数组中配置iscms\Alisms\AlidayuServiceProvider::class,在项目根目录执行// 生成配置文件php artisan转载 2016-10-16 17:15:32 · 6573 阅读 · 2 评论 -
阿里大鱼短信demo
根目录文件有 AlibabaAliqinFcSmsNumSendRequest.phpAlibabaAliqinFcTtsNumSinglecallRequest.phpAlibabaAliqinFcVoiceNumDoublecallRequest.phpAlibabaAliqinFcVoiceNumSinglecallRequest.phpRequestCheckUtil.原创 2016-10-16 10:11:30 · 1756 阅读 · 0 评论 -
支付宝接口代码(TP框架)
最近做系统,需要实现在线支付功能,毫不犹豫,选择的是支付宝的接口支付功能。这里我用的是即时到帐的接口,具体实现的步骤如下:一、下载支付宝接口包下载地址:https://b.alipay.com/order/productDetail.htm?productId=2012111200373124&tabId=4#ps-tabinfo-hash具体如何下载,我就不在罗嗦了~~很转载 2016-07-27 09:57:13 · 5309 阅读 · 0 评论 -
统计汉字的个数
//计算多少个字数 ord()计算汉字的assII值 function _strlen_utf8($str) { if(function_exists('mb_strlen')) return mb_strlen($str,'utf8'); $i = 0; $count = 0; $len = strlen ($s原创 2016-07-05 11:13:53 · 526 阅读 · 0 评论 -
php+ajax+jquery实现分页
HTML?1234divid="list"> ul>ul>div>divid="pagecount">div>页面中,#list用来展示数据列表,包括本例要展示的商品图片和标题,#pagecount用来展示分页条,即本例中的上一页、下一页。当然,别忘了,在转载 2016-07-26 18:01:56 · 847 阅读 · 0 评论