多数大学生出来选择的工作和专业无关
首页 > 专业知识

PHP为什么优于Node.js

时间:2018-02-05 17:04:43 [来源]:郑州PHP培训学校

   PHP为什么优于Node.js

  PHP是一款服务器端的脚本语言,主要用于动态网页开发,是目前最流行的开发语言之一。Node是一款 用来编写高性能网络服务器的JavaScript工具包。作者Jani Hartikainen发表了一篇博文,文中将两者进行对比,列举了PHP优于Node.js的五大理由。一起来看下。
  1. 容易托管
  大多数Web托管服务器提供商能为PHP提供托管,而对于Node,你需要找一个更专业的托管服务提供商。通常情况下,需要通过shell访问来设置应用程序,并且大部分托管提供商不包含这些,即便是包含此功能的,其他的包要相对的廉价些。
  2. PHP在服务器上安装更方便、简易
  PHP可轻易的安装WAMP,LAMP或者MAMP,将代码部署到一个Web虚拟主机,只需要拖放文件,就可大功告成。
  虽然,Node本身并不难安装,但是仍需要具备更多的专业知识才能将它设置好,为了能够在服务器上安装,你通常需要了解一些Linux系统管理员方面的知识,以便你在安装过程中当系统奔溃时确保node能够很好的运行。
  3. 如果PHP代码损坏,不会拖垮整个服务器
  PHP代码只运行在自己的进程范围中,当某个请求显示错误时,它只对特定的请求产生影响。而在Node环境中,所有的请求均在单一的进程服务器中,当某个请求导致未知错误时,整个服务器都会受到影响。
  4. PHP进程短暂
  在PHP中每个进程对请求持续的时间很短暂,这就意味着你不必为资源配置和内存而担忧。而Node在进程过程中需要运行很长一段时间,你需要小心并妥善管理好内存。比如,如果你忘记从全局数据中删除条目,这会轻易的导致你将内存泄露。
  5.更大的标准库
  PHP的标准库比Node的标准库要大的多。
 
  正则表达式之正则处理函数
  前面我们已经学习了正则表达式的基础语法,包括了定界符、原子、元字符和模式修正 符。实际上正则表达式想要起作用的话,就必须借用正则表达式处理函数。本节我们就来介绍一下PHP中基于perl的正则表达式处理函数,主要包含了分割, 匹配,查找,替换等等处理操作,依旧是配合示例讲解,让我们开始吧。
  和正则表达式一样,正则表达式处理函数不能够独立使用,而这必须相结合,才能够完成特定的功能。在前面我们也说过,基于perl的正则表达式要快于POXIS正则表达式处理函数,所以我们只介绍以preg开头的基于perl的正则表达式。注意:在能偶使用字符串函数处理的时候,就不要使用正则表达式来处理字符串,因为字符串处理函数更快。
  下面我们来看一些常用的正则表达式处理函数。
  1,preg_match()函数。
  函数preg_match()执行一个正则表达式匹配,其定义如下:
  int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )实际上就是搜索subject中匹配pattern的部分, 以保存在数组matches中.请看示例:
  <?php
  $pattern = '/<b>.*?<\/b>/';
  $string = '<b>welcome</b> <b>to</b> <b>phpfuns</b>dsadsadas';if (preg_match($pattern, $string, $arr)) {echo "正则表达式<b>{$pattern}</b>和字符串<b>{$string}</b>匹配成功<br>";print_r($arr);
  } else {
  echo "<font color='red'>正则表达式{$pattern}和字符串{$string}匹配失败</font>";}
  ?>
  2,preg_match_all()函数。
  函数preg_match_all()函数执行一个全局正则表达式匹配,其定义和preg_match()函数一致,只不过匹配了全部结果。请看示例:
  <?php
  $pattern = '/<b>.*?<\/b>/';
  $string = '<b>welcome</b> <b>to</b> <b>phpfuns</b>dsadsadas';if (preg_match_all($pattern, $string, $arr)) {echo "正则表达式<b>{$pattern}</b>和字符串<b>{$string}</b>匹配成功<br>";print_r($arr);
  } else {
  echo "<font color='red'>正则表达式{$pattern}和字符串{$string}匹配失败</font>";}
  ?>
  依旧是上面的示例(只换了正则处理函数为preg_match_all()),但是匹配的结果数组内容不一样了。
 
  PHP生成和获取XML格式数据
  在做数据接口时,我们通常要获取第三方数据接口或者给第三方提供数据接口,而这些数据格式通常是以XML或者JSON格式传输,本文将介绍如何使用PHP生成XML格式数据供第三方调用以及如何获取第三方提供的XML数据。
  生成XML格式数据
  我们假设系统中有一张学生信息表student,需要提供给第三方调用,并有id,name,sex,age分别记录学生的姓名、性别、年龄等信息。
  CREATE TABLE `student` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(50) NOT NULL,
  `sex` varchar(10) NOT NULL,
  `age` smallint(3) NOT NULL default '0',
  PRIMARY KEY  (`id`)
  ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
  首先,建立createXML.php文件,先连接数据库,获取数据。
  include_once ("connect.php"); //连接数据库$sql = "select * from student";
  $result = mysql_query($sql) or die("Invalid query: " . mysql_error());while ($row = mysql_fetch_array($result)) {$arr[] = array(
  'name' => $row['name'],
  'sex' => $row['sex'],
  'age' => $row['age']
  );
  }
  这个时候,数据就保存在$arr中,你可以使用print_r打印下数据测试。
  接着,建立xml,循环数组,将数据写入到xml对应的节点中。
  $doc = new DOMDocument('1.0', 'utf-8');  // 声明版本和编码$doc->formatOutput = true;
  $r = $doc->createElement("root");
  $doc->appendChild($r);
  foreach ($arr as $dat) {
  $b = $doc->createElement("data");
  $name = $doc->createElement("name");
  $name->appendChild($doc->createTextNode($dat['name']));$b->appendChild($name);
  $sex = $doc->createElement("sex");
  $sex->appendChild($doc->createTextNode($dat['sex']));$b->appendChild($sex);
  $age = $doc->createElement("age");
  $age->appendChild($doc->createTextNode($dat['age']));$b->appendChild($age);
  $r->appendChild($b);
  }
  echo $doc->saveXML();
  我们调用了PHP内置的类DOMDocument来处理与生成xml。
 

上一篇:使用PHP脚本来写Daemon程序

下一篇:PHP经常容易记乱的知识