今天我们来了解一个百万级PHP站点的网站架构:Poppen.de。Poppen.de是德国的一个社交网站,相对Facebook、Flickr来说是一个很小的网站,但它有一个很好的架构,融合了很多技术,如 Nginx、MySql、CouchDB、Erlang、Memcached、RabbitMQ、PHP、Graphite、Red5以及Tsung。
PHP
用PHP实现验证码功能
先看看调用方法:
<img id="vcodeimages" src="vcodeimages.php" onclick="this.src='vcodeimages.php?t='+Math.random()" style="cursor:pointer;" alt="点击刷新验证码" />
上面的代码中,img标签的src指向了一个名为vcodeimages.php的文件,这个文件就是负责实现生成验证码图片的PHP程序,下面我们看看vcodeimages.php文件的代码,也是验证码的实现方法:
<?php session_start(); header("Content-type: image/png"); $VerifyCode = ""; $im = ImageCreate(50, 20); //开始创建图形 $color_bg = ImageColorAllocate($im, 255, 255, 255); //定义背景颜色 $color_font = ImageColorAllocate($im, 0, 0, 0); //定义文字颜色 $color_pixel = ImageColorAllocate($im, 0, 0, 0); //定义干扰像素颜色 for($i=0; $i<4; $i++) { //加入随机数 $RandNum = strval(mt_rand("1", "9")); $VerifyCode .= $RandNum; ImageString($im, 5, ($i * 11) + 4, 2, $RandNum, $color_font); } for($i=0; $i<200; $i++) { //加入干扰象素 ImageSetPixel($im, rand() % 70, rand() % 30, $color_pixel); } $_SESSION["VerifyCode"] = $VerifyCode; //将验证码存入Session ImagePNG($im); //以PNG格式建立图形 ImageDestroy($im); //结束创建图形 ?>
阳光部落原创,更多内容请访问 http://www.sunbloger.com/
分享一个PHP的远程图片抓取函数
下面的代码是一个PHP的远程图片抓取函数:
<?php /** * 抓取远程图片 * * @param string $url 远程图片路径 * @param string $filename 本地存储文件名 */ function grabImage($url, $filename = '') { if($url == '') { return false; //如果 $url 为空则返回 false; } $ext_name = strrchr($url, '.'); //获取图片的扩展名 if($ext_name != '.gif' && $ext_name != '.jpg' && $ext_name != '.bmp' && $ext_name != '.png') { return false; //格式不在允许的范围 } if($filename == '') { $filename = time().$ext_name; //以时间戳另起名 } //开始捕获 ob_start(); readfile($url); $img_data = ob_get_contents(); ob_end_clean(); $size = strlen($img_data); $local_file = fopen($filename , 'a'); fwrite($local_file, $img_data); fclose($local_file); return $filename; } ?>
详解PHP中include和require的区别
1.报错
include引入文件时,如果遇到错误,会报出Warning,并继续执行后面的代码;
require引入文件时,如果遇到错误,会报出Error,并停止运行后面的代码。
举例说明,创建两个名为 test-include.php 和 test-require.php 的PHP文件,
注意相同的目录中,不要存在一个名字是test-nothing.php的文件。
test-include.php
<?php include 'test-nothing.php'; //包含一个不存在的文件 echo 'abc'; ?>
test-require.php
<?php require 'test-nothing.php'; //包含一个不存在的文件 echo 'abc'; ?>
PHP 5.3.6 版本发布
近日PHP 5.3.6 版本已经发布。
该版本修复了60多个bug,其中很多是安全相关问题。
安全性增强和bug修复如下:
* Enforce security in the fastcgi protocol parsing with fpm SAPI.
* Fixed bug #54247 (format-string vulnerability on Phar). (CVE-2011-1153)
* Fixed bug #54193 (Integer overflow in shmop_read()). (CVE-2011-1092)
PHP程序员10种最易犯的错误
利用PHP的cURL库实现网页抓取
使用PHP的cURL库可以简单和有效地去抓网页。你只需要运行一个脚本,然后分析一下你所抓取的网页,然后就可以以程序的方式得到你想要的数据了。无论是你想从从一个链接上取部分数据,或是取一个XML文件并把其导入数据库,那怕就是简单的获取网页内容,cURL 是一个功能强大的PHP库。本文主要讲述如果使用这个PHP库。
下面是一个利用cURL库抓取网页的简单例子:
<?php $curl = curl_init(); //初始化一个cURL对象 curl_setopt($curl, CURLOPT_URL, 'http://cocre.com'); //设置你需要抓取的URL curl_setopt($curl, CURLOPT_HEADER, 1); //设置header curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //设置cURL参数 $data = curl_exec($curl); //运行cURL,请求网页 curl_close($curl); //关闭URL请求 var_dump($data); //显示获得的数据 ?>
基于PHP的PDO编写的MySQL类2.0版源码分享
这次修改主要是增加了2个新function:
1. getTableEngine(),用于获取表引擎;
2. Replace(),以覆盖方式插入数据。
分享源码,仅供技术交流,下载请移步至:http://www.sunbloger.com/download/
源码如下:
让NuSphere PhpED的注释更规范
NuSphere PhpED是我编写PHP时最喜欢用的一个IDE,但PhpED安装后,在默认设置下,对于函数或方法的注释并不十分规范,会出现下面这种注释的书写方法:
<?php /** * This is Test! * * @param string $a */ function test($a) { if($a == '') { $a = 'test'; } return $a; } ?>
注意到了吗?注释部分从第2行开始到结束,缩进的位置都是与第1行一样的,这是PhpED在默认设置下,当输入/**并按回车后,自动完成注释剩余部分,但没有处理好缩进,当然这并不是什么错误。但对于完美主义者来说,一段完美的注释应该是下面这个样子的:
LAMP环境配置全程笔记(原创)
如有疏漏或不当之处欢迎指正,我的E-Mail是jasonwei06@hotmail.com,谢谢!
//——————————安装环境——————————
//Linux版本:Red Hat Enterprise Linux 5 Update4
//Apache版本:Apache 2.0.63
//MySQL版本:MySQL 5.1.43
//PHP版本:PHP 5.2.13