控制 php 类的实例化次数!为了保证服务器资源的有效利用,而且一个类比方说模板啊,数据库什么的,在一个页面内只需要实例化一次!也就是在内存中只运行一个实例!那么为了避免重复实例化,那么控制 php 类的实例化次数,是很有必要的!方法其实很简单:就是给类一个外部接口,私有化(private)构造函数,抛弃可以在类外部使用new实例化该类的方法!以下,就是我给出的一个例子,相信大家一看就明白了!( PHP5 以上版本! )
回复一位PHPER的面试题解答
1.什么是引用?引用的优缺点,还有关于函数返回引用的问题.
彻底解决PHPMyAdmin中文UTF-8乱码问题
方便,但是同样也遇到了中文乱码的问题,主要是UTF-8和GB2312编码不能同时正确显示。从网上找到了一些资料,但是都不是很直接,现在结合自己的操作重新整理一下。
Zend系列产品的php.ini配置
[Zend]
; zend optimizer & zend debugger 冲突,不能同时共存
Windows下PHP5.2.4+Apache2.2.4+MySql5.0.27完整配置
下面以php5.2.4,apache2.2.6,MySQL为例介绍一下PHP开发环境的搭建。
下载apache、php及mysql安装包
Windows环境下完全手工配置Apache、MySQL和PHP
现在LAMP(Linux、Apache、MySQL、PHP/Perl/Python的简称)已经很流行了。在Windows下也有类似的,比如 WAMP(Apache, MySQL, PHP on Windows)。这篇文章主要是介绍如何在Windows环境下完全手工配置Apache、MySQL和PHP,都是解压后直接修改配置文件的。当然也可以下载执行安装文件的版本,一个个进行自动安装。甚至可以下载这些软件的集合版本(WampServer,XAMPP),一步到位的安装。这里进行的是解压安装,看起来有些多此一举了,不过这样能了解这些软件安装的过程,有问题时能及时发现,某个软件升级更新时也能快速配置。
windowsXP环境下apache2.2+mysql5.1+php5.2+phpmyadmin2.
apache_2.2.6-win32-x86-no_ssl.msi 下载地址
mysql-noinstall-5.1.22-rc-win32.zip 下载地址
php-5.2.0-Win32.zip 下载地址
phpMyAdmin-2.11.3-all-languages.zip 下载地址
php有两种安装方法,模块化安装和CGI安装,当PHP被配置成CGI解析器时,每次解释PHP版本,web服务器便产生一个临时的PHP解析器来解释PHP脚本,很明显,这会使其性能降低。而当PHP被编译成Apache的一个模块时,它和Apache服务器运行在同一块内存地址中,和传统的CGI模式在性能上有非常大的提高。有些功能像持续的数据库连接只能在Apache模块方式下才具有。采用CGI模式时,还会遇到一些安全性方面的问题。所以本指引采用模块化安装PHP的方式。
1、安装apache:
1.1:下载以后点击直接安装就可以,我选择安装为D:workapache目录,安装以后apache就会自动运行,在地址栏里面输入http://127.0.0.1/便能出现apache的欢迎页面(It works!),表示apache安装已经成功。
1.2:修改D:workapacheconfhttpd.conf这个apache的配置文件,将其中的DocumentRoot "D:/work/apache/htdocs"修改为DocumentRoot "D:/work/web/";修改<Directory "D:/work/apache/htdocs">为<Directory "D:/work/web/">,注意这里两个目录的路径都是指向你程序开发的目录,最后要加上“/”。
1.3:重新启动apache(右下角应该多了一个绿色的灯,在里面找到restart),在地址栏里面输入http://127.0.0.1/就可以工作目录了。
2、安装PHP:
2.1:将PHP文件的安装包解压到D:workphp,然后拷贝D:workphpphp5ts.dll到C:WINDOWSsystem32。
2.2:在PHP的目录下面,将php.ini-dist修改为php.ini,修改其中的extension_dir为extension_dir = "D:workphpext"
2.3:将D:workapacheconfhttpd.conf中的DirectoryIndex index.html修改为DirectoryIndex index.html index.php,这样就可以默认支持index.php为默认加载页。
2.4:在D:workapacheconfhttpd.conf中的最后加上下面的三行代码:
LoadModule php5_module "d:/work/php/php5apache2_2.dll"
AddType application/x-httpd-php .php
PHPIniDir "d:/work/php/"
2.5:重新起动apache以后,可以在工作目录下面新建index.php,写入:
<?php
phpinfo();
?>
然后访问http://127.0.0.1/出现大量的图标,就说明安装成功了。
3、安装MySQL:
3.1、将MySQL解压到D:workmysql目录,然后运行D:workmysqlbinmysqld.exe,MySQL就可以顺利运行了,但是还需要将D:workphplibmysql.dll文件复制到C:WINDOWSsystem32下面。php就能顺利得支持MySQL了。
3.2、修改步骤2.2里面的php.ini,将;extension=php_mysql.dll前面的“;”号去掉,让PHP支持mysql,然后重新启动apache。
WINDOWS2003+IIS环境下PHP配置心得
简单说来需要以下几步
1、采用安装包或ZIP包将PHP安装到本机,采用安装包可以省去配置系统环境变量"PATH" 和 配置php.ini文
件,缺点是选安装时选择几个扩展选项就安装几个扩展文件,不利于以后的系统扩展,如果采用手工安装则可以
通过php.ini自已决定开启哪些扩展。同时也能够对php的工作机制有一个深入的了解。
2、在IIS中安装WEB服务扩展,如果你只使用PHP 与 静态页,只允许PHP扩展就可以,其他全部禁用。网上
其它文章所说必须开启ASP扩展,开启所有未知ISAPI扩展 或 开启所有未知CGI扩展都没有必要。
3、在你的PHP网站或虚拟目录的属性-》主目录-》映射栏-》添加应用程序扩展,这一步是在地址栏里能识
别.php扩展名的关键。
4、到这一步实际上IIS就可以解析PHP了。可能你执行普通PHP脚本,但很可能连不上mysql数据库。
关于激活mysql扩展库
一般情况下,都能实现显示PHPinfo()的页面。就从能够显示该页面之后出现的问题说起
Ubuntu 7.1 server从无到有搭建jsp/php/rails全能WEB生产环境(三)
三、安装PHP
先安装php需要的一些包。
php模拟登录 获取SESSIONID,并则在读取网页的时候发送
方法1用curl:
一.先开启php curl函数库的步骤
1).去掉windows/php.ini 文件里;extension=php_curl.dll前面的; /*用 echo phpinfo();查看php.ini的路径*/
2).把php5/libeay32.dll,ssleay32.dll复制到系统目录windows/下
3).重启apache
二.例子
例子:
<?php
$cookie_jar = tempnam(''./tmp'',''cookie'');
$ch = curl_init(); curl_setopt($ch,CURLOPT_URL,''http://******'');
curl_setopt($ch, CURLOPT_POST, 1);
$request = ''email_address=&password=&action='';
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
//把返回来的cookie信息保存在$cookie_jar文件中
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);
//设定返回的数据是否自动显示
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//设定是否显示头信息
curl_setopt($ch, CURLOPT_HEADER, false);
//设定是否输出页面内容
curl_setopt($ch, CURLOPT_NOBODY, false);
curl_exec($ch);
curl_close($ch); //get data after login
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, ''http://*****'');
curl_setopt($ch2, CURLOPT_HEADER, false);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch2, CURLOPT_COOKIEFILE, $cookie_jar);
$orders = curl_exec($ch2);
echo '''';
echo strip_tags($orders);
echo '''';
curl_close($ch2);
?>
方法2用fsockopen:
<?php
function GetWebContent($host, $method, $str, $sessid = '''')
{
$ip = gethostbyname($host);
//echo "ip=$ip<br>";
[email=$fp=@fsockopen($ip,80]$fp=@fsockopen($ip,80[/email]);
if (!$fp) return;
fputs($fp, "$method");
fputs($fp, "Host: $host");
if (!empty($sessid))
{
fputs($fp, "Cookie: PHPSESSID=$sessid; path=/;");
}
if ( substr(trim($method),0, 4) == "POST")
{
fputs($fp, "Content-Length: ". strlen($str) . ""); // 别忘了指定长度
}
//fputs($fp, "Content-Type: application/x-www-form-urlencoded ");
fputs($fp, "Content-Type: application/x-www-form-urlencoded");
fputs($fp, "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1) )");//add by Ew 071012
fputs($fp, "Connection: Keep-Alive");
if ( substr(trim($method),0, 4) == "POST")
{
fputs($fp, $str."");
}
while(!feof($fp))
{
$response .= fgets($fp);
}
$hlen = strpos($response,""); // LINUX下是 " "
$header = substr($response, 0, $hlen);
//echo "header=$header<hr><hr>";
$entity = substr($response, $hlen + 4);
if ( preg_match(''/PHPSESSID=([0-9a-z]+);/i'', $header, $matches))
{
$a[''sessid''] = $matches[1];
}
if ( preg_match(''/Location: ([0-9a-z_?=&#.]+)/i'', $header, $matches))
{
$a[''location''] = $matches[1];
}
$a[''content''] = $entity;
fclose($fp);
return $a;
}
$response = GetWebContent("$host","POST /$login_page HTTP/1.0", $str);//登入得到新的session_id
//...可以在这里先保存session_id
$response = GetWebContent("$host","GET /$somepage HTTP/1.0", '''', $response[''sessid'']);//使用session_id访问页面
echo $response[''location''].$response[''content'']."<br>";
?>
用 Smarty 分离 PHP 应用程序中的形式与功能
再出江湖,Jpage分页php版发布
声明:本文同时发表于一搏IT社区、CSDN、昨夜风个人网站,欢迎任何网站/个人转载,但请保留声明信息和作者信息,多谢合作!
作者:靳英辉(昨夜风)
版本:Jpage v2.0 for php
发表:2008-12-02