首页 > phper

控制 PHP 类的实例化次数!

控制 php 类的实例化次数!为了保证服务器资源的有效利用,而且一个类比方说模板啊,数据库什么的,在一个页面内只需要实例化一次!也就是在内存中只运行一个实例!那么为了避免重复实例化,那么控制 php 类的实例化次数,是很有必要的!方法其实很简单:就是给类一个外部接口,私有化(private)构造函数,抛弃可以在类外部使用new实例化该类的方法!以下,就是我给出的一个例子,相信大家一看就明白了!( PHP5 以上版本! )

阅读全文

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/">,注意这里两个目录的路径都是指向你程序开发的目录,最后要加上&ldquo;/&rdquo;。

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前面的&ldquo;;&rdquo;号去掉,让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()的页面。就从能够显示该页面之后出现的问题说起

阅读全文

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 (!$fpreturn;
    
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>";
?>

  




<

阅读全文