Welcome 微信登录

首页 / 网页编程 / PHP

php解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题

php解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题

我们知道数据库处理sql是一条条处理的,假设购买商品的流程是这样的:sql1:查询商品库存if(库存数量 > 0){//生成订单...sql2:库存-1}当没有并发时,上面的流程看起来是如此完美,假设同时两个人下单,而库存只有1个了,在sql1阶段两个人查询到的库存都是>0的,于是最终都执行了sql2,库存最后变为-1,超售了,要么补库存,要么等用户投诉吧。解决这个问题比较流行的思路:1.用额外的单进程处理一个队列,下单请求放到队列里,一个个处...
php对包含html标签的字符串进行截取的函数分享

php对包含html标签的字符串进行截取的函数分享

这个方法的作用是:php截取含有html标签的字符串,如果标签未闭合就闭合标签,防止未闭合的标签破坏原网页布局。截取完之后将多余的内容替换为...或者其他任意字符,支持锚点指定替换到指定位置。/** ============================== 截取含有 html标签的字符串 =========================* @param (string) $str 待截取字符串* @param (int)$lenth截取长度* @pa...
PHP mkdir()无写权限的问题解决方法

PHP mkdir()无写权限的问题解决方法

使用mkdir创建文件夹时,发现这个函数有两个参数,第二个参数是为新创建的文件夹指定权限。但是如果直接用mkdir("文件地址", 0777);时 发现新文件夹的权限并不是777,一般情况下会是022。因为mkdir在给文件夹制定权限时,会跟当前登录操作系统用户的umask(用户缺省权限属 性)值进行位“与”,得到的值才是最终权限值。umask 是什么?我们创建文件的默认权限是怎么来的?如何改变这个默认权限呢?当我们登录系统之后创建一个文件总是有一个默认权...
PHP采集类Snoopy抓取图片实例

PHP采集类Snoopy抓取图片实例

用了两天php的Snoopy这个类,发现很好用。获取请求网页里面的所有链接,直接使用fetchlinks就可以,获取所有文本信息使用fetchtext(其内部还是使用正则表达式在进行处理),还有其它较多的功能,如模拟提交表单等。使用方法:先下载Snoopy类,下载地址:http://sourceforge.net/projects/snoopy/先实例化一个对象,然后调用相应的方法即可获取抓取的网页信息复制代码 代码如下:include "snoopy/S...
PHP采集类snoopy详细介绍(snoopy使用教程)

PHP采集类snoopy详细介绍(snoopy使用教程)

Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表单,可以用来开发一些采集程序和小偷程序,本文章详细介绍snoopy的使用教程。Snoopy的一些特点:抓取网页的内容 fetch抓取网页的文本内容 (去除HTML标签) fetchtext抓取网页的链接,表单 fetchlinks fetchform支持代理主机支持基本的用户名/密码验证支持设置 user_agent, referer(来路), cookies 和 header co...
php计算两个日期时间差(返回年、月、日)

php计算两个日期时间差(返回年、月、日)

在PHP程序中,很多时候都会遇到处理时间的问题,比如:判断用户在线了多长时间,共登录了多少天,两个帖子发布的时间差或者是不同操作之间的日志记录等等。在文章中,简单地举例介绍了PHP中如何计算两个日期相差 年、月、日。<?php/**+----------------------------------------------------------* 功能:计算两个日期相差 年 月 日+----------------------------...
ThinkPHP3.1基础知识快速入门

ThinkPHP3.1基础知识快速入门

在当今众多的MVC框架中,ThinkPHP是一个快速、简单的基于MVC和面向对象的轻量级PHP开发框架,其遵循Apache2开源协议发布,自从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,尤其注重开发体验及易用性,并且拥有众多的原创功能和特性,为WEB应用开发提供了强有力的支持。是众多PHP开发人员的首选。本文就ThinkPHP3.1基础知识做一简述。1.目录结构ThinkPHP最新版本可以在官方网站(http://thinkph...
PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数

PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数

PHP 跳转,即重定向浏览器到指定的 URL,是一个很常见的功能。这种功能也有一些细节性的要求,比如等待多少秒以后跳转,用不用JavaScript实现跳转,等等。下面的跳转方法考虑到很多,并参数化,可以用到具体的项目当中。<?php /*** 重定向浏览器到指定的 URL** @param string $url 要重定向的 url* @param int $delay 等待多少秒以后跳转* @param bool $js 指示是否返回用于跳...
ThinkPHP3.1新特性之多层MVC的支持

ThinkPHP3.1新特性之多层MVC的支持

1.模型(Model)层:默认的模型层由Model类构成,但是随着项目的增大和业务体系的复杂化,单一的模型层很难解决要求,从3.1开始推出了多层Model的支持,设计思路很简单,不同的模型层仍然都继承自系统的Model类,但是在目录结构和命名规范上做了区分,例如在某个项目设计中需要区分数据层、逻辑层、服务层等不同的模型层,我们可以在项目的Lib目录下面创建Model、Logic和Service目录,把对用户表的所有模型操作分成三层:数据层:Model/Us...
ThinkPHP3.1新特性之Action参数绑定

ThinkPHP3.1新特性之Action参数绑定

ThinkPHP3.1版的Action参数绑定功能提供了URL变量和操作方法的参数绑定支持,这一功能可以使得你的操作方法定义和参数获取更加清晰,也便于跨模块调用操作方法。这一新特性对以往的操作方法使用没有任何影响,你也可以用新的方式来改造以往的操作方法定义。Action参数绑定的原理是把URL中的参数(不包括分组、模块和操作地址)和控制器的操作方法中的参数进行绑定。例如,我们给Blog模块定义了两个操作方法read和archive方法,由于read操作需要...
ThinkPHP3.1新特性之命名范围的使用

ThinkPHP3.1新特性之命名范围的使用

ThinkPHP3.1的命名范围功能,给模型操作提供了一系列的(连贯操作)封装,让你更方便的查询和操作数据。下面我们就来具体了解下这一用法。1.定义属性要使用命名范围功能,主要涉及到模型类的_scope属性定义和scope连贯操作方法的使用。我们首先定义_scope属性:class NewsModel extends Model {protected $_scope = array(// 命名范围normal"normal"=>array("wher...
ThinkPHP3.1的Widget新用法

ThinkPHP3.1的Widget新用法

ThinkPHP3.0版本的Widget对Action和View的支持力度是相对不够的,仅能够实现基本的模板渲染输出。而3.1版本的发布带来的多层MVC功能,给我们实现Widget的方式带来了新的思路,且看是如何实现吧。由于ThinkPHP3.1增加了对多层MVC的支持,因此3.1版本可以支持多层的控制器功能,由此我们就可以在控制器层再增加一层:Widget层。首先,还是在项目的Lib目录下面创建一个Widget目录,并且创建一个TestWidget类(L...
<< 391 392 393 394 395 396 397 398 399 400 >>