一切福田,不離方寸,從心而覓,感無不通。

Category Archives: PHP

vsphp:vs下开发php

喜欢VS的码农们是否也想用VS开发php,答案是肯定的,那就试试vsphp吧:http://www.vsphp.com/

龙生   07 May 2014
View Details

安装Ecshop首页出现报错:Only variables should be passed by referen

出现下面这就话:

龙生   27 Mar 2014
View Details

使用数据库构建高性能队列用于存储订单、通知和任务

引言 几乎在每个地方都能用到队列。在许多web站点里,比如其中的email和SMS都是使用队列来异步发送通知。电子商务网站都是使用队列来存储订单,处理订单以及实现订单的分发。工厂生产线的自动化系统也是使用队列来按某种顺序运行并发工作任务的。队列是使用很广泛的一种数据结构,它有时可以创建在数据库里,而不是使用类似于MSMQ那样的特定的队列技术创建。使用数据库技术来运行一个高性能且高可扩展性的队列对我们来说是一个巨大的挑战。当每天进入队列和从队列中提取的信息达到数百万行的时候,这个队列就很难维护了。我将向你展示在设计类似队列表时常犯的设计错误以及如何使用简单的数据库功能实现队列的最大性能和强大的可扩展性。 几点人 翻译于 5天前 0人顶 顶 翻译的不错哦! 首先让我们明确在队列表中遇到的挑战: 表的读写。在大负载下,入队列和出队列是相互影响而引起锁的竞争、事务死锁、IO超时等等。 当多个接收者试图从同一队列读数据时,它们随机地获取重复项,从而导致重复的处理过程。你需要在队列上实现一些高性能的行锁以至于并发接受器不会接收相同的数据项。 队列表需要以特定的顺序去存储行、以特定的顺序读取行数据,这是一个索引设计的挑战。尽管并不总是先进先出。间或顺序有较高的优先级,无论何时入栈都需要进行处理。 队列表需要以序列化的XML对象或者二进制形式存储, 这带来了存储和索引重建的挑战。由于数据表包含文本和/或二进制,所以你不能在队列表上重建索引。因此队列表每天变的越来越慢,最终查询开始时间超时,最后你不得不关闭服务并重建索引。 出队列的过程中,一批行数据被选中、更新,然后重新处理。你需要一个"State"列定义数据项的状体。出队列时,你只选择特定状态的数据项。现在State只是一个包含PENDING、PROCESSING、PROCESSED、ARCHIVED等元素的集合。结果是你不能在"State"列上创建索引,原因是安全性差。队列中可以有成千上万行具有相同的状态。因此 任何由扫面索引的出队列操作都会导致CPU和IO资源紧张以及锁竞争。 在出队列过程中,你不只是从表中移出行,原因是容易引起存储残片。进而,你需要重新订单/任务/通知N次以防止他们在第一次尝试中失败。这意味着行数据需要更长的存储周期、索引持续增长和出队列越来越慢。 你不得不归档以队列表中处理过的数据项到不同的表或者数据库,以保持主队列表的精简。这意味着需要移动大量的具有特殊状态的行到另一个数据库。大量的数据移动产生了的存储碎片,而表的高频度碎片整理降低入栈和出栈的性能。 你需要24X7的工作。你不可能关闭服务而归档大量行数据。这意味者在不影响入栈和出栈,你不得不持续的归档行数据。 如果您已实现这样的队列表,你可能已经遇到了以上挑战中的一个或者更多。本文将给你一个关于如何克服这些挑战的一些技巧,以及如何设计和维护一个高性能的队列表。 漠天 翻译于 4天前 0人顶 顶 翻译的不错哦! SQL Server典型队列 下面以常见的队列类型为例,看看在并发负载时的情况. 01 CREATE TABLE [dbo].[QueueSlow]( 02     [QueueID] [int] IDENTITY(1,1) NOT NULL, 03     [QueueDateTime] [datetime] NOT NULL, 04     [Title] [nvarchar](255) NOT NULL, 05     [Status] [int] NOT NULL, 06     [TextData] [nvarchar](max) NOT NULL 07 ) ON [PRIMARY] 08 GO 09 CREATE UNIQUE CLUSTERED INDEX [PK_QueueSlow] ON [dbo].[QueueSlow] 10 ( 11     [QueueID] ASC 12 ) 13 GO 14 CREATE NONCLUSTERED INDEX [IX_QuerySlow] ON [dbo].[QueueSlow] 15 ( 16     [QueueDateTime] ASC, 17     [Status] ASC 18 ) 19 INCLUDE ( [Title]) 20 GO   该队列中使用QueueDateTime排序来模拟先进先出的队列结构 . QueueDateTime不一定非得是对象加入队列的时间,而是其将要被处理的开始时间 于是保证了先进先出的次序关系. TextData字段是为了保存进行负载测试的大字段设计的. 表中使用QueueDateTime 的非聚簇索引以加速队列操作速度 首先,插入大约4万行大约500兆数据量的记录,其中每行的负载数大小各不相同. 01 set nocount on 02 declare @counter int 03 set @counter = 1 04 while @counter < @BatchSize 05 begin 06     insert into [QueueSlow] (QueueDateTime, Title, Status, TextData) 07     select GETDATE(), 'Item no: ' + CONVERT(varchar(10), @counter), 0, […]

龙生   11 Mar 2014
View Details

MagicZoom bug-Strict Standards: Only variables should be assigned by

龙生   25 Feb 2014
View Details

PHP配置文件详解php.ini

[PHP] ; PHP还是一个不断发展的工具,其功能还在不断地删减 ; 而php.ini的设置更改可以反映出相当的变化, ; 在使用新的PHP版本前,研究一下php.ini会有好处的 ;;;;;;;;;;;;;;;;;;; ; 关于这个文件 ; ;;;;;;;;;;;;;;;;;;; ; 这个文件控制了PHP许多方面的观点。为了让PHP读取这个文件,它必须被命名为 ; 'php.ini’。PHP 将在这些地方依次查找该文件:当前工作目录;环境变量PHPRC ; 指明的路径;编译时指定的路径。 ; 在windows下,编译时的路径是Windows安装目录。 ; 在命令行模式下,php.ini的查找路径可以用 -c 参数替代。 ; 该文件的语法非常简单。空白字符和用分号';’开始的行被简单地忽略(就象你可能 ; 猜到的一样)。 章节标题(例如 : [Foo])也被简单地忽略,即使将来它们可能 ; 有某种的意义。 ; ; 指示被指定使用如下语法: ; 指示标识符 = 值 ; directive = value ; 指示标识符 是 *大小写敏感的* – foo=bar 不同于 FOO = bar。 ; ; 值可以是一个字符串,一个数字,一个 PHP 常量 (如: E_ALL or M_PI), INI 常量中的 ; 一个 (On, Off, True, False, Yes, No and None) ,或是一个表达式 ; (如: E_ALL & ~E_NOTICE), 或是用引号括起来的字符串(" foo" ). ; ; INI […]

龙生   25 Feb 2014
View Details

PHP输出中文乱码的问题

用echo输出的中文显示成乱码, 其实应该是各种服务器脚本都会遇到这个问题, 根本还是编码问题, 一般来说出于编码兼容考虑大多的页面都将页面字符集定义为utf-8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 这时候要正常显示中文需要转化一下编码方式,比如 echo iconv("GB2312","UTF-8",’中文');就不会乱码了 还有其他方法,比如 在php的echo前面加入header("Content-Type:text/html;charset=gb2312"); 当然简体中文页面也可以干脆地, 把<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />中的UTF-8改成gb2312 实际中遇见奇怪的现象, 在本机服务器上正常显示的页面,传上服务器就echo出来乱码, 没仔细琢磨过这个缘由,因为通过iconv函数GB2312、UTF-8换换位置重新编码下就正常了, 不过估计肯定是APACHE,更确切说是PHP服务端的设置不同造成的, 看看PHP.INI应该就能解决。 from:http://www.cnblogs.com/leandro/archive/2008/04/21/1368517.html

龙生   25 Feb 2014
View Details

import_request_variables

龙生   25 Feb 2014
View Details

禁止浏览器缓存

html: <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-store, must-revalidate"> <meta http-equiv="expires" content="wed, 26 feb 1997 08:21:57 gmt"> <meta http-equiv="expires" content="0"> asp response.expires=0 response.addheader("pragma","no-cache") response.addheader("cache-control","no-store, must-revalidate") php header("expires: mon, 26 jul 1997 05:00:00 gmt"); header("cache-control: no-store, must-revalidate"); header("pragma: no-cache"); jsp: response.addheader("cache-control", "no-store, must-revalidate"); response.addheader("expires", "thu, 01 jan 1970 00:00:01 gmt"); 转自:http://www.oschina.net/code/snippet_81226_7660

龙生   19 Feb 2014
View Details

2014 年 15 款新评定的最佳 PHP 框架

通常,框架都会被认为是帮助开发者快速设计和开发动态网站的软件应用。每个月都有极大数量的新发布的 PHP 框架,使网站开发更简单更高效。 如果你是位 PHP 开发者,正在寻找当前最好的一些 PHP 框架来帮助开发你的项目,那么这里正是你要找的地方。在这篇文章我们会介绍 15 款最好的 PHP 框架,这些框架都是最新评定的,可以大大的简化你的开发任务。这些 PHP 框架可以帮助开发者快速设计和开发各种跨浏览器的动态网站和 web 应用,最后,希望你能在这些列表中找到你想要的 PHP 框架,Enjoy !! 1. Yaf : Yet Another Framework Yaf 是第一个 PHP MVC 框架,用 C 语言编写,作为 PHP 的扩展来创建的。它被认为是最快和最低资源消耗的 PHP 框架,经过了良好的测试,并且现在已经很成功的应用在很多 web 项目上。 2. Nette Framework Nette Framework 是个现代化风格的 PHP 框架,对安全进行了革命性的改进,使用面向对象的设计理念,非一般的性能表现和超级简单的学习曲线。除了这些之外,它还有个非常活跃的社区,给予用户足够的灵活性。 3. Guzzle Guzzle 是个 PHP 框架,又是个 PHP HTTP 客户端,用来创建 RESTful web 服务客户端。它的主要特性是通过服务描述快速创建客户端;尽可能高效的批量发送大量的请求;持久性连接和并行请求;其他更多的功能。 4. Behat Behat 是个行为驱动的开发(BDD)框架,允许用户编写便于人们阅读的故事驱动代码,描述该应用应该怎样工作。任何人都能快速简单的掌握它的使用方法。 5. Phalcon Phalcon 实现了 C 的扩展,是个高性能,低能耗 PHP框架。它包括一个模版引擎,加密,分页,assets 管理和其他更多的工具。 6. Flight Flight 是个快速,简单,可扩展的 PHP 框架,允许用户快速简单的创建 RESTful web 应用。 7. Webasyst Webasyst 是个开源的 PHP 框架,用来开发时尚的多用户 web 应用和高级的网站。相对比其他框架,比如Zend 和 Symfony,它更注重于构建商业和给团队使用的 web 应用,更快更高效。 8. Medoo Medoo 是个轻量级的 PHP 数据库框架,帮助用户快速开发 web […]

龙生   19 Feb 2014
View Details

如何配置Eclipse PHP 集成开发工具(PDT)

下载Eclipse PDT All-In-One http://download.eclipse.org/tools/pdt/downloads/ 安装Zend Debugger   · 选择Help->Software Updates->Find and Install · 选择 Search for new features to install, 点击 Next · 点击 the New Remote Site 按钮… Name: Zend Debugger URL: http://downloads.zend.com/pdt · Zend Debugger 现在在Sites to include in search 列表被选中, 点击 Finish按钮。 同样的方式安装JSEclipse(如果需要团队合作还可以装上Subclipse提供对Subversion 的支持) Name: JSEclipse URL: http://download.macromedia.com/pub/labs/jseclipse/autoinstall Name: Subclipse 1.2.x URL: http://subclipse.tigris.org/update_1.2.x Name: Aptana URL:  http://update.aptana.com/update/3.2/ PDT调试方法 PHP Executable Debugger Zend Executable Debugger – 免费的Eclipse插件,在Eclipse 环境提供可执行的调试功能 PHP Web Server Debugger Zend Web Server Debugger – 安装在Web 服务器端的调试工具 XDebug Components – XDebug用于Web 服务器端的调试 注:版本发布类型 Released Builds – 稳定经过测试的发布版,可能不包含最新的功能特性 Stable […]

龙生   23 Nov 2013
View Details
1 19 20 21 26