php的优缺点

 更新时间:2016年11月25日 16:09  点击:1720



PHP的优点:

  1. 跨平台,性能优越,跟Linux/Unix结合别跟Windows结合性能强45%,并且和很多免费的平台结合非常省钱,比如LAMP(Linux/Apache/Mysql/PHP)或者FAMP(FreeBSD/Apache/Mysql/PHP)结合,或者数据应用够大可以考虑换PostgreSQL或者Oracle,支持N种数据库。(N >= 10)

  2. 语法简单,如果有学习C和Perl的很容易上手,并且跟ASP有部分类似。有成熟的开发工具,比如NuPHPed,或者Zend Studio等等,再Linux平台下可以使用Eclipse等等。

  3. 目前主流技术都支持,比如WebService、Ajax、XML等等,足够应用。

  4. 有比较完整的支持,比如使用ADODB或者PEAR::DB做数据库抽象层,用Smarty或者smart template做模板层,如果是PHP 5.1的话,还能够使用PDO(PHP Data Object)来访问数据库。

  5. 有很多成熟的框架,比如支持MVC的框架:phpMVC,支持类似ASP.net的事件驱动的框架:Prado,支持类似Ruby On Rails的快速开发的框架:Cake等等,足够满足你的应用需求。

  6. PHP 5已经有成熟的面向对象体系,能够适应基本的面向对象要求。适合开发大型项目。

  7. 有成熟的社区来支持PHP的开发,比如国内的CSDN,喜悦国际村等等。

  8. 目前已经很多大型应用都是使用PHP,比如淘宝网、Yahoo、163、Sina等等大型门户,很多选用PHP来作为他们的开发语言,所以大型门户都能够选用它,我想足够能够你的使用了。

  PHP的缺点:

  1. 代码重用率有待提高,当然,这个跟面向对象有关系。其实PHP 5已经比较适意了。

  2. PHP程序员较少 (这个算php的缺点嘛,呵呵~)

<

近日对PHP产生了浓厚的兴趣,遂决定学习一下。首先是安装。

第一步,安装Apache

        从apache下载Apache2.2安装包,安装,运行,浏览器输入地址127.0.0.1:8080,出现“It Works!”,安装成功。

第二步,安装PHP5

         从cn2.php.net下载windows安装包,运行安装,看到选择扩展的界面,想当然的全部选择,安装OK。再运行Apache,报错,缺少DLL,不能启动PHP。看来扩展不是随便选择的,再次运行安装程序,取消所有扩展,再次运行Apache,OK。写一个页面,加入<?php phpinfo(); ?>,浏览器打开,It‘s OK。

        安装phpmyadmin吧,google了一个安装包下载,解压到apache htdocs目录,运行,提示没有安装MySQL扩展,Easy,再度运行安装程序,修改安装选项,加上MySQL扩展,然后再度运行phpmyadmin,还是提示没有MySQL扩展。嗯,没有任何事情是简单的。

        查看PHP文档,说最好的安装方式是手动安装,怀疑是安装包的问题,卸载,下载PHP手动安装包,解压,按照文档说明,在httpd.conf中加入
                         # 配置 php.ini 的路径
                         PHPIniDir "C:/php5/"

                         # 对 PHP 5 用这两行:
                         LoadModule php5_module "c:/php5/php5apache2_2.dll"
                         AddType application/x-httpd-php .php
,然后复制php.ini-dist为php.ini,去掉GD2,MySQL扩展前面的分号,启动apache,运行phpmyadmin,还是提示没有MySQL扩展。仔细检查安装过程,C:/PHP5加到了环境变量Path中,php.ini中extension_path也更改了,httpd.conf中也加入了PHPIniDir,C:/PHP5/中也确实存在libmysql.dll文件,完全符合文档的描述,也没有什么疏漏,就是找不到。崩溃ing

        参绕了好几天,google无数次,也没有搞定,后来病急乱投医,将libmysql.dll拷贝到Windowssystem32下面,MySQL扩展安装成功。晕倒,文档中说不建议拷贝php5ts.dll 到系统目录,将PHP目录加到PATH 环境变量就可以找到DLL,看来只是能找到php5ts.dll,找不到扩展所需的DLL?

三、搭建开发环境

        我的首选当然是Eclipse了,下载PDT,代码提示、自动完成没什么问题,试一试Debug能力吧,打开Eclipse的帮助,找到PDT Debug一节,按照帮助提示试了试调试功能,

最近研究php多线程的问题,发现中文资源少的可怜,仅有的几篇文章被转了又转,但文中内容价值有限。搜索过程中发现国外很多网站引用的一篇文章写的不错,所以翻译过来。

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
问题:
假设你正在写一个基于多台服务器的php应用,理想的情况时同时向多台服务器发送请求,而不是一台接一台。
可以实现吗?
回答:

当有人想要实现并发功能时,他们通常会想到用fork或者spawn threads,但是当他们发现php不支持多线程的时候,大概会转换思路去用一些不够好的语言,比如perl。

其实的是大多数情况下,你大可不必使用fork或者线程,并且你会得到比用fork或thread更好的性能。

假设你要建立一个服务来检查正在运行的n台服务器,以确定他们还在正常运转。你可能会写下面这样的代码:

<?php
$hosts = array("host1.sample.com", "host2.sample.com", "host3.sample.com");
$timeout = 15;
$status = array();
foreach ($hosts as $host) {
    $errno = 0;
    $errstr = "";
    $s = fsockopen($host, 80, $errno, $errstr, $timeout);
    if ($s) {
        $status[$host] = "Connectedn";
        fwrite($s, "HEAD / HTTP/1.0rnHost: $hostrnrn");
        do {
            $data = fread($s, 8192);
            if (strlen($data) == 0) {
            break;
            }
            $status[$host] .= $data;
        } while (true);
        fclose($s);
    } else {
        $status[$host] = "Connection failed: $errno $errstrn";
    }
}
print_r($status);
?>

它运行的很好,但是在fsockopen()分析完hostname并且建立一个成功的连接(或者延时$timeout秒)之前,扩充这段代码来管理大量服务器将耗费很长时间。
因此我们必须放弃这段代码;我们可以建立异步连接-不需要等待fsockopen返回连接状态。PHP仍然需要解析hostname(所以直接使用ip更加明智),不过将在打开一个连接之后立刻返回,继而我们就可以连接下一台服务器。
有两种方法可以实现;PHP5中可以使用新增的stream_socket_client()函数直接替换掉fsocketopen()。




  最近遇到要使用PHP访问WebService。问了一下PHP程序员,用过的人少。自己配置。
  在XP上配置不成功,在Win2003上安装一个5.2,安装时记得选择支持Soap。安装完后把IIS里解释PHP的DLL路径改正确。
  把PHP.ini文件拷贝到Windows目录下,把Soap的Dll文件php_soap.dll拷贝到System32目录下。重启IIS。新建一个PHP文件。
1/* soap.php */
2/* 连接的是C#实现的Webservice */
3$client = new SoapClient( http://xx.xxx.xx.com/service.asmx?wsdl );
4$client->YourFunctionName(
5array(
6  "Parameter1"=>"Value1",
7  "Parameter2"=>"Value2") );
8print $client->YourFunctionNameResult;
9
  这样就得到结果了。
  SoapClient语法详见php.net。用它也可以建立PHP的WebService。
本文来自: 中国自学编程网(www.zxbc.cn) 详细出处参考:http://www.zxbc.cn/html/phpjq/1212264662844.html
 




啊哈,终于用PHP实现了登录和注册拉,但是问题又来了,要求用ajax和php结合实现登录注册油烟机清洗
php登录源码:
下面是chklogin.php页面代码:
<?php
session_start();
$connect=mysql_connect("127.0.0.1","root","123");
if(!$connect)
{
die(''Could not connect: '' . mysql_error());
}
mysql_select_db(design,$connect);
$query="select * from ta_user where user_name =''".$name."''";
$result=mysql_query($query) OR die("Unable to connect to MySQL");
$rows=mysql_fetch_array($result);
if($rows[user_password]==$pwd)
{

header("Location:login_suss.php?name=".$name."");
}
else
{
echo "<table width=''235'' height=''61'' border=''0'' align=''center''>";
echo "<tr><td height=''29''>用户名或密码错误!</td></tr>";
echo "<tr><td height=''29''>请点击<a href=''javascrīpt:history.go(-1);''>这儿</a>重新输入!";
echo "</td></tr>";
echo "</table>";

}
?>

ajax:

<scrīpt language="javascrīpt">
function getXMLHTTPRequest()
{
var xRequest=null;
if (window.XMLHttpRequest)
{
xRequest=new XMLHttpRequest();
}
else if (typeof ActiveXObject != "undefined")
{
xRequest=new ActiveXObject("Microsoft.XMLHTTP");
}
return xRequest;
}
function Ajax(url)
{
AjaxObj = getXMLHTTPRequest();
AjaxObj.onreadystatechange = processRequest;
AjaxObj.open("post",url,true);
AjaxObj.setRequestHeader(''Content-type'',''application/x-www-form-urlencoded'');
AjaxObj.send("name"+name);

}
function processRequest()
{

if(AjaxObj.readyState == 4)
{
if(AjaxObj.status == 200)
{
if(AjaxObj.responseText != "")
{
document.getElementById("show").innerHTML="";
//alert(AjaxObj.responseText);

document.getElementById("show").innerHTML=AjaxObj.responseText;

}
}
else
{
alert("您所请求的页面有异常。
<
[!--infotagslink--]

相关文章

  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • index.php怎么打开?如何打开index.php?

    index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
  • PHP中func_get_args(),func_get_arg(),func_num_args()的区别

    复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04
  • PHP编程 SSO详细介绍及简单实例

    这篇文章主要介绍了PHP编程 SSO详细介绍及简单实例的相关资料,这里介绍了三种模式跨子域单点登陆、完全跨单点域登陆、站群共享身份认证,需要的朋友可以参考下...2017-01-25
  • PHP实现创建以太坊钱包转账等功能

    这篇文章主要介绍了PHP实现创建以太坊钱包转账等功能,对以太坊感兴趣的同学,可以参考下...2021-04-20
  • php微信公众账号开发之五个坑(二)

    这篇文章主要为大家详细介绍了php微信公众账号开发之五个坑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-02
  • ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单

    首先是数据库的设计。分类表叫cate.我做的是分类数据的二级联动,数据需要的字段有:id,name(中文名),pid(父id). 父id的设置: 若数据没有上一级,则父id为0,若有上级,则父id为上一级的id。数据库有内容后,就可以开始写代码,进...2014-05-31
  • PHP如何通过date() 函数格式化显示时间

    这篇文章主要介绍了PHP如何通过date() 函数格式化显示时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-13
  • PHP+jQuery+Ajax实现多图片上传效果

    今天我给大家分享的是在不刷新页面的前提下,使用PHP+jQuery+Ajax实现多图片上传的效果。用户只需要点击选择要上传的图片,然后图片自动上传到服务器上并展示在页面上。...2015-03-15
  • golang与php实现计算两个经纬度之间距离的方法

    这篇文章主要介绍了golang与php实现计算两个经纬度之间距离的方法,结合实例形式对比分析了Go语言与php进行经纬度计算的相关数学运算技巧,需要的朋友可以参考下...2016-07-29
  • PHP如何使用cURL实现Get和Post请求

    这篇文章主要介绍了PHP如何使用cURL实现Get和Post请求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-07-11
  • 谈谈PHP中相对路径的问题与绝对路径的使用

    经常看到有人踩在了PHP路径的坑上面了,感觉有必要来说说PHP中相对路径的一些坑,以及PHP中绝对路径的使用,下面一起来看看。 ...2016-08-24
  • thinkPHP中多维数组的遍历方法

    这篇文章主要介绍了thinkPHP中多维数组的遍历方法,以简单实例形式分析了thinkPHP中foreach语句的使用技巧,需要的朋友可以参考下...2016-01-12
  • PHP正则表达式过滤html标签属性(DEMO)

    这篇文章主要介绍了PHP正则表达式过滤html标签属性的相关内容,实用性非常,感兴趣的朋友参考下吧...2016-05-06
  • php构造方法中析构方法在继承中的表现

    这篇文章主要为大家详细介绍了php构造方法中析构方法在继承中的表现,感兴趣的小伙伴们可以参考一下...2016-04-15
  • jQuery+PHP+MySQL实现无限级联下拉框效果

    这篇文章主要介绍了jQuery+PHP+MySQL实现无限级联效果的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-02-21
  • php图片添加文字水印实现代码

    这篇文章主要为大家详细介绍了php图片添加文字水印实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-03-17
  • php有序列表或数组中删除指定的值的实现代码

    这篇文章主要介绍了php有序列表或数组中删除指定的值的实现代码,删除给定的值之后,得到一个新的有序列表,长度-1,下面是具体的实现方法...2021-08-22
  • PHP简单实现生成txt文件到指定目录的方法

    这篇文章主要介绍了PHP简单实现生成txt文件到指定目录的方法,简单对比分析了PHP中fwrite及file_put_contents等函数的使用方法,需要的朋友可以参考下...2016-04-28