PHP确实十分容易编写。但是PHP也有一些十分严重的缺陷。为什么PHP不适合于比小型业余网站更大的网站呢? 1. 对递归的不良支持 递归是一种函数调用自身的机制。这是一种强大的特性可以把某些复杂的东西变得很简单。有一个使用递归的例子是快速排序(quicksort)。不幸的是,PHP并不擅长递归。Zeev,一个PHP开发人员,说道:“PHP 4.0(Zend)对密集数据使用了栈方式,而不是使用堆方式。也就是说它能容忍的递归函数的数量限制和其他语言比起来明显少。”见bug 1901。这是一个很不好的借口。每一个编程语言都应该提供良好的递归支持。
2. 许多PHP模块都不是线程安全的 在几年前,Apache发布了Web服务器的2.0版。这个版本支持多线程模式,在这个模式下,软件一个一部分可以同时运行多个。PHP的发明者说PHP的核心是线程安全的,但是非核心模块不一定是。但是十次有九次,你想要在PHP脚本中使用这种模块,但这又使你的脚本不能合适Apache的多线程模式。这也是为什么PHP小组不推荐在Apache 2 的多线程模式下运行PHP。不良的多线程模式支持使PHP常被认为是Apache 2依然不流行的原因之一。 3. PHP 由于商业原因而不健全 通过使用缓存,PHP的性能可以 ......
整的函数,今天小小的总结一下!其实很简单,就是几个函数而已~~主要是:ceil,floor,round,intval
ceil -- 进一法取整
说明
float ceil ( float value )
返回不小于 value 的下一个整数,value 如果有小数部分则进一位。ceil() 返回的类型仍然是 float,因为 float 值的范围通常比 integer 要大。
例子 1. ceil() 例子
<?php
echo ceil(4.3); // 5
echo ceil(9.999); // 10
?>
floor -- 舍去法取整
说明
float floor ( float value )
返回不大于 value 的下一个整数,将 value 的小数部分舍去取整。floor() 返回的类型仍然是 float,因为 float 值的范围通常比 integer 要大。
例子 1. floor() 例子
<?php
echo floor(4.3); // 4
echo floor(9.999); // 9
?>
round -- 对浮点数进行四舍五入
说明
float round ( float val [, int precision] ) 返回将 val 根据指定精度 precision(十进制小数点后数字的数目)进行四舍五入的结果。precision 也可以是负数或零(默认值)。
例子 1. round() 例子
<?php
echo round(3.4); // 3
echo round(3.5); // 4
echo round(3.6); ......
php中日期转换函数strtotime的用法:
语法:
int strtotime ( string time [, int now] )
返回将任何英文文本的日期时间描述解析为 Unix 时间戳
实例:
一,获取指定日期的unix时间戳 strtotime("2009-1-22") 示例如下:
echo strtotime("2009-1-22") 结果:1232553600
说明:返回2009年1月22日0点0分0秒时间戳
二,获取英文文本日期时间 示例如下:
便于比较,使用date将当时间戳与指定时间戳转换成系统时间
(1)打印明天此时的时间戳strtotime("+1 day")
当前时间:echo date("Y-m-d H:i:s",time()) 结果:2009-01-22 09:40:25
指定时间:echo date("Y-m-d H:i:s",strtotime("+1 day")) 结果:2009-01-23 09:40:25
(2)打印昨天此时的时间戳strtotime("-1 day")
当前时间:echo date("Y-m-d H:i:s",time()) 结果:2009-01-22 09:40:25
指定时间:echo date("Y-m-d H:i:s",strtotime("-1 day")) 结果:2009-01-21 09:40:25
(3)打印下个星期此时的时间戳strtotime("+1 week")
当前时间:echo date("Y-m-d H:i:s",time()) 结果:2009-0 ......
1.
$query = $this->db->query('SELECT name, title, email from my_table');
foreach ($query->result() as $row)
{
echo $row->title;
echo $row->name;
echo $row->email;
}
2.
foreach ($query->result_array() as $row)
{
echo $row['title'];
echo $row['name'];
echo $row['email'];
}
3.
if ($query->num_rows() > 0)
4.
$query = $this->db->query('SELECT name from my_table LIMIT 1');
$row = $query->row();//$row = $query->row_array();
echo $row->name;
你可以传递参数以便获得某一行的数据。比如我们要获得第 5 行的数据:
$row = $query->row_array(5);
除此以外, 我们还可以使用下面的方法通过游标的方式获取记录:
$row = $query->first_row()
$row = $query->last_row()
$row = $query->next_row()
$row = $query->previous_row()
5.
$sql = "INSERT INTO mytable (title, name)
VALUES ......
使用的是ADODB库,需要有OCI8库.
<?php
//require("adodb5/adodb-exceptions.inc.php");
require("adodb5/adodb.inc.php");
$conn = NewADOConnection("oci8");
$conn->Connect($url, $user, $password, $service_name);
$rs;
try {
$rs = $conn->Execute("SELECT * from (SELECT rownum r,ima_file.* from ima_file) s WHERE s.r >= 9000 AND s.r <= 10000");
} catch(exception $e) {
print_r($e);
}
$i = 0;
echo "<table border=1><caption>IMA_FILE</caption><thead><td>计数</td><td>行数</td><td>料件号</td><td>品名</td><td>规格</td></thead>";
foreach($rs as $row) {
echo "<tr><td>" . ++$i . "</td><td>$row[0]</td><td>{$row[1]}</td><td>{$row[2]}</td><td>{$row[3]}</td></tr>";
}
echo "</table>";
?>
......
使用的是ADODB库,需要有OCI8库.
<?php
//require("adodb5/adodb-exceptions.inc.php");
require("adodb5/adodb.inc.php");
$conn = NewADOConnection("oci8");
$conn->Connect($url, $user, $password, $service_name);
$rs;
try {
$rs = $conn->Execute("SELECT * from (SELECT rownum r,ima_file.* from ima_file) s WHERE s.r >= 9000 AND s.r <= 10000");
} catch(exception $e) {
print_r($e);
}
$i = 0;
echo "<table border=1><caption>IMA_FILE</caption><thead><td>计数</td><td>行数</td><td>料件号</td><td>品名</td><td>规格</td></thead>";
foreach($rs as $row) {
echo "<tr><td>" . ++$i . "</td><td>$row[0]</td><td>{$row[1]}</td><td>{$row[2]}</td><td>{$row[3]}</td></tr>";
}
echo "</table>";
?>
......
这些天想作一个在网站中实现插件的功能,谷歌了一下,发现一篇文章感觉对我帮助很大,帖出来和大家分享,废话不多说,直接帖出代码供大家分析:
首先是插件的管理类的实现:
<?
/**
* STBLOG PluginManager Class
*
* 插件机制的实现核心类
*
* @package STBLOG
* @subpackage Libraries
* @category Libraries
* @author Saturn
* @link http://www.cnsaturn.com/
*/
class PluginManager
{
/**
* 监听已注册的插件
*
* @access private
* @var array
*/
private $_listeners = array();
/**
* 构造函数
*
* @access public
* @return void
*/
public function __construct()
{
#这里$plugin数组包含我们获取已经由用户激活的插件信息
#为演示方便,我们假定$plugin中至少包含
#$plugin = array(
# 'name' => '插件名称',
# 'directory'=>'插件安装目录'
#);
$plugins = get_active_plugins();#这个函数请自行实现
i ......