php在linux中可能用到的命令

 更新时间:2017年7月6日 23:49  点击:1281
小编推荐的这篇文章介绍了php在linux中可能用到的命令,非常实用,有兴趣的同学快来看看吧。

如下所示:

php -i | grep php.ini    查找php.ini的位置

php-cgi -b 127.0.0.1:9000 &  查看php-cgi进程

小编推荐的这篇文章介绍了PHP中使用OpenSSL生成证书及加密解密,非常实用,有兴趣的同学快来参考一下吧。

依赖于OpenSSL扩展

 代码如下复制代码

/*加密解密*/

functionauthcode($string,$operation='E') {

  $ssl_public=file_get_contents(DATA_PATH."/conf/cert_public.key");

  $ssl_private=file_get_contents(DATA_PATH."/conf/cert_private.pem");

  $pi_key= openssl_pkey_get_private($ssl_private);//这个函数可用来判断私钥是否是可用的,可用返回资源id Resource id

  $pu_key= openssl_pkey_get_public($ssl_public);//这个函数可用来判断公钥是否是可用的

  if(false == ($pi_key||$pu_key))return'证书错误';

  $data="";

  if($operation=='D'){

    openssl_private_decrypt(base64_decode($string),$data,$pi_key);//私钥解密

  }else{

    openssl_public_encrypt($string,$data,$pu_key);//公钥加密

    $data=base64_encode($data);

  }

  return$data;

}

/*生成证书*/

functionexportOpenSSLFile(){

  $config=array(

    "digest_alg"   =>"sha512",

    "private_key_bits"=> 4096,          //字节数  512 1024 2048  4096 等

    "private_key_type"=> OPENSSL_KEYTYPE_RSA,  //加密类型

  );

  $res= openssl_pkey_new($config);

  if($res== false)returnfalse;

  openssl_pkey_export($res,$private_key);

  $public_key= openssl_pkey_get_details($res);

  $public_key=$public_key["key"];

  file_put_contents(DATA_PATH."/conf/cert_public.key",$public_key);

  file_put_contents(DATA_PATH."/conf/cert_private.pem",$private_key);

  openssl_free_key($res);

}

小编推荐的这篇文章介绍了PHP的中使用非缓冲模式查询数据库的方法,非常实用,有兴趣的同学快来看看吧。

最近在开发一个PHP程序时遇到了下面的错误:

PHP Fatal error: Allowed memory size of 268 435 456 bytes exhausted

错误信息显示允许的最大内存已经耗尽。遇到这样的错误起初让我很诧异,但转眼一想,也不奇怪,因为我正在开发的这个程序是要用一个foreach循环语句在一个有4万条记录的表里全表搜索具有特定特征的数据,也就是说,一次要把4万条数据取出,然后逐条检查每天数据。可想而知,4万条数据全部加载到内存中,内存不爆才怪。

毕竟编程这么多年,我隐约记得PHP里提供有非一次全部加载数据的API,是像处理流媒体那样,随用随取随丢、数据并不会积累在内存的查询方法。经过简单的搜索,果然在官方网站上找到的正确的用法。缓冲查询和非缓冲查询(Buffered  and Unbuffered  queries)。PHP的查询缺省模式是缓冲模式。也就是说,查询数据结果会一次全部提取到内存里供PHP程序处理。这样给了PHP程序额外的功能,比如说,计算行数,将指针指向某一行等。更重要的是程序可以对数据集反复进行二次查询和过滤等操作。但这种缓冲查询模式的缺陷就是消耗内存。

另外一种PHP查询模式是非缓冲查询,数据库服务器会一条一条的返回数据,而不是一次全部返回,这样的结果就是PHP程序消耗较少的内存,但却增加了数据库服务器的压力,因为数据库会一直等待PHP来取数据,一直到数据全部取完。

非缓冲查询方法一: mysqli

 代码如下复制代码

<?php

$mysqli=newmysqli("localhost","my_user","my_password","world");

$uresult=$mysqli->query("SELECT Name FROM City", MYSQLI_USE_RESULT);

  

if($uresult) {

  while($row=$uresult->fetch_assoc()) {

    echo$row['Name'] . PHP_EOL;

  }

}

$uresult->close();

非缓冲查询方法二: pdo_mysql

 代码如下复制代码

<?php

$pdo=newPDO("mysql:host=localhost;dbname=world",'my_user','my_pass');

$pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);

  

$uresult=$pdo->query("SELECT Name FROM City");

if($uresult) {

  while($row=$uresult->fetch(PDO::FETCH_ASSOC)) {

    echo$row['Name'] . PHP_EOL;

  }

}

非缓冲查询方法三: mysql

 代码如下复制代码

<?php

$conn= mysql_connect("localhost","my_user","my_pass");

$db = mysql_select_db("world");

  

$uresult= mysql_unbuffered_query("SELECT Name FROM City");

if($uresult) {

  while($row= mysql_fetch_assoc($uresult)) {

    echo$row['Name'] . PHP_EOL;

  }

}

注:引之 http://www.webhek.com/php-buffered-and-unbuffered-queries

手册资料 http://php.net/manual/zh/mysqlinfo.concepts.buffering.php

小编推荐的这篇文章介绍了PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换),非常实用,有兴趣的同学快来看看吧。

本文实例讲述了PHP进制转换。分享给大家供大家参考,具体如下:

可以实现:

10进制转换2、8、16、36、62进制

2、8、16、36、62进制转换10进制

有点要注意下,2、8、16进制转换时,使用的是系统的自己的函数。

所以,不管怎么高精度转换值可能大于2147483646。

另外,

32进制低精转换,最大值:2147483646;
32进制高精转换,最大值:77309411327;
64进制高精转换,最大值:133143986175。

jinzhi.php文件,自带演示功能。

 代码如下 复制代码

<?php

$mtime1=explode(" ", microtime());

$startTime=$mtime1[0] +$mtime1[1];

?>

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type"content="text/html; charset=gb2312"/>

<title>进制转换/title>

</head>

<body>

<form id="jzh"name="jinzhih"method="post"action="">

<input name="go"type="hidden"value="100">

<table width="482"border="1"cellpadding="0"cellspacing="0"bordercolor="#FFE8E8"bgcolor="#F4F8FB">

 <tr>

  <td width="194"><select name="jinzhi0"id="jinzhi0">

  <option value="2">2</option>

  <option value="8">8</option>

  <option value="10"selected="selected">10</option>

  <option value="16">16</option>

  <option value="36">36</option>

  <option value="62">62</option>

  </select>

进制</td>

 <td width="275"><input name="zhi"type="text"id="zhi"/></td>

 </tr>

 <tr>

  <td>进行<input name="lx"type="radio"value="0"checked="checked"/>

普通<input type="radio"name="lx"value="1"/>高精</td><td> </td>

 </tr>

 <tr>

  <td>转换为

  <select name="jinzhi1"id="jinzhi1">

   <option value="2"selected="selected">2</option>

   <option value="8">8</option>

   <option value="10">10</option>

   <option value="16">16</option>

   <option value="36">36</option>

   <option value="62">62</option>

  </select>进制,</td><td>总长度为

  <input name="changdu"type="text"id="changdu"value="10"size="4"maxlength="2"/>

字符。</td></tr><tr>

 <td><input type="submit"name="Submit"value="提交"/></td>

 <td><input type="reset"name="Submit2"value="重置"/></td>

 </tr></table>

 <p>注意:仅能进行10进制转换为2、8、16、36、62进制;或反转换。</p></form>

<?php

classjinzhi_class

{

   //10进制转2、8、16、36、62进制

   functionjinzhih_0($shu,$jinzhi,$w)

   {

   $zifu="";

   while($shu!=0){

   $linshi=$shu%$jinzhi;

   switch($jinzhi){

    case2:

     $zifu=decbin($shu);

     return$zifu;

    case8:

     $zifu=decoct($shu);

     return$zifu;

    case16:

     $zifu=dechex($shu);

     return$zifu;

    case36:

     if($linshi>=10)

     {

     $zifu.=chr(($linshi+55));

     }else{

      $zifu.=$linshi;}

     break;

    case62:

     if(($linshi>=10) && ($linshi36)) {$zifu.=chr($linshi+55);break;}

     if(($linshi>=36) && ($linshi62)) {$zifu.=chr($linshi+61);break;}

     $zifu.=$linshi;break;

   default:

   $zifu.=$linshi;

   break;

   }

   $shu=intval($shu/$jinzhi);

   }

   for($i=strlen($zifu);$i$w;$i++)

   $zifu.="0";

  returnstrrev($zifu);}

   //2、8、16、36、62进制转10进制

   functionjinzhih_1($zifu,$jinzhi,$w)

 {$shu=0;

  for($i=0;$i=strlen($zifu)-1;$i++)

     {

     $linshi=substr($zifu,$i,1);

     switch($jinzhi){

      case2:

       $shu=bindec($zifu);

       $i=strlen($zifu)+1;

       break;

      case8:

       $shu= octdec($zifu);

      $i=strlen($zifu)+1;

      break;

      case16:

       $shu= hexdec($zifu);

       $i=strlen($zifu)+1;

       break;

     case36:

      if(ord($linshi)=57)

      {$shu+=(ord($linshi)-48)*pow($jinzhi,strlen($zifu)-$i-1);

     }else{

       $shu=$shu+ (ord($linshi)-55)*pow($jinzhi,strlen($zifu)-$i-1);}

       break;

     case62:

      if(ord($linshi)=57)

      {$shu+=$linshi*pow($jinzhi,strlen($zifu)-$i-1);    

     }elseif((ord($linshi)>=65) && (ord($linshi)=90)){

      $shu+= (ord($linshi)-55)*pow($jinzhi,strlen($zifu)-$i-1);

      }else{

      $shu+= (ord($linshi)-61)*pow($jinzhi,strlen($zifu)-$i-1);}

      break;

     }

   }

   return$shu;

   }

   //10进制高精度转换2、8、16、36、62进制

   functionjinzhih_G0($shu,$jinzhi,$w)

   {

   $zifu="";

   while($shu!=0){

   $linshi=bcmod($shu,$jinzhi);

   switch($jinzhi){

    case2:

     $zifu=decbin($shu);

     return$zifu;

    case8:

     $zifu=decoct($shu);

     return$zifu;

    case16:

     $zifu=dechex($shu);

     return$zifu;

    case36:

     if($linshi>=10)

     {

     $zifu.=chr(($linshi+55));

     }else{

      $zifu.=$linshi;}

     break;

    case62:

     if(($linshi>=10) && ($linshi36)) {$zifu.=chr($linshi+55);break;}

     if(($linshi>=36) && ($linshi62)) {$zifu.=chr($linshi+61);break;}

     $zifu.=$linshi;break;

   default:

   $zifu.=$linshi;

   break;

   }

   $shu=intval(bcdiv($shu,$jinzhi));

   }

   for($i=strlen($zifu);$i$w;$i++)

   $zifu.="0";

  returnstrrev($zifu);}

   //2、8、16、36、62进制高精度转换10进制

   functionjinzhih_G1($zifu,$jinzhi,$w)

 {$shu="";

  for($i=0;$i=strlen($zifu)-1;$i++)

     {

     $linshi=substr($zifu,$i,1);

     switch($jinzhi){

      case2:

       $shu=bindec($zifu);

       $i=strlen($zifu)+1;

       break;

      case8:

       $shu= octdec($zifu);

      $i=strlen($zifu)+1;

      break;

      case16:

       $shu= hexdec($zifu);

       $i=strlen($zifu)+1;

       break;

     case36:

      if(ord($linshi)=57)

      {$shu=bcadd($shu,bcmul((ord($linshi)-48),bcpow($jinzhi,strlen($zifu)-$i-1)));

     }else{

       $shu=bcadd($shu,bcmul((ord($linshi)-55),bcpow($jinzhi,strlen($zifu)-$i-1)));}

       break;

     case62:

      if(ord($linshi)=57)

      {$shu=bcadd($shu,bcmul($linshi,bcpow($jinzhi,strlen($zifu)-$i-1)));

     }elseif((ord($linshi)>=65) && (ord($linshi)=90)){

      $shu=bcadd($shu,bcmul((ord($linshi)-55),bcpow($jinzhi,strlen($zifu)-$i-1)));

      }else{

      $shu=bcadd($shu,bcmul((ord($linshi)-61),bcpow($jinzhi,strlen($zifu)-$i-1)));

      }

      break;

     }

   }

   return$shu;}

}

if(isset($_GET["p"]))

{if($_GET["p"]==="1"){

echo"";

echo"提示:

";

echo"32进制低精转换,最大值:2147483646

";

echo"32进制高精转换,最大值:77309411327

";

echo"64进制高精转换,最大值:133143986175

";

echo"";

echo"值为:";

$Fs=newjinzhi_class();

if($_POST['lx']=="0"&&$_POST['jinzhi0']=="10")

{echo$Fs->jinzhih_0($_POST['zhi'],$_POST['jinzhi1'],$_POST['changdu'])."

";}

if($_POST['lx']=="1"&&$_POST['jinzhi0']=="10")

{echo$Fs->jinzhih_G0($_POST['zhi'],$_POST['jinzhi1'],$_POST['changdu']);}

if($_POST['lx']=="0"&&$_POST['jinzhi0']>"10")

{echo$Fs->jinzhih_1($_POST['zhi'],$_POST['jinzhi0'],$_POST['changdu']);}

if($_POST['lx']=="1"&&$_POST['jinzhi0']>"10")

{echo$Fs->jinzhih_G1($_POST['zhi'],$_POST['jinzhi0'],$_POST['changdu']);}

}

echo"";}

$mtime1=explode(" ", microtime());

$endTime=$mtime1[0] +$mtime1[1];

printf ("页面执行时间:%.6fs.",$endTime-$startTime);

?>

[!--infotagslink--]

相关文章

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

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

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • 使用percona-toolkit操作MySQL的实用命令小结

    1.pt-archiver 功能介绍: 将mysql数据库中表的记录归档到另外一个表或者文件 用法介绍: pt-archiver [OPTION...] --source DSN --where WHERE 这个工具只是归档旧的数据,不会对线上数据的OLTP查询造成太大影响,你可以将...2015-11-24
  • index.php怎么打开?如何打开index.php?

    index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
  • 在linux中使用包管理器安装node.js

    网上文章中,在linux下安装node.js都是使用源码编译,其实node的github上已经提供了各个系统下使用各自的包管理器(package manager)安装node.js的方法。...2015-03-15
  • Linux安装Pytorch1.8GPU(CUDA11.1)的实现

    这篇文章主要介绍了Linux安装Pytorch1.8GPU(CUDA11.1)的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-25
  • Linux中grep命令详解

    grep命令是Linux系统中最重要的命令之一,功能是从文本文件或管道数据流中筛选匹配的行和数据,如果再配合正则表达式,功能十分强大,是Linux运维人员必备的命令,这篇文章主要介绍了Linux中grep详解,需要的朋友可以参考下...2023-02-15
  • C#隐式运行CMD命令(隐藏命令窗口)

    这篇文章主要介绍了C#隐式运行CMD命令(隐藏命令窗口),本文实现在winform窗口中运行CMD命令,需要的朋友可以参考下...2020-06-25
  • PHP实现连接设备、通讯和发送命令的方法

    本文实例讲述了PHP实现连接设备、通讯和发送命令的方法。分享给大家供大家参考。具体如下:开发的BS架构的软件(PHP),需要跟设备进行通讯,在此记录一下,欢迎各位指正:1. 采用php socket技术使用TCP/IP连接设备参数$service_po...2015-10-21
  • 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
  • 对MySQL日志操作的一些基本命令总结

    MySQL日志主要包含:错误日志、查询日志、慢查询日志、事务日志、二进制日志;日志是mysql数据库的重要组成部分。日志文件中记录着mysql数据库运行期间发生的变化;也就是说用来记录mysql数据库的客户端连接状况、SQL语句...2015-11-24
  • 详解Linux环境变量配置全攻略

    这篇文章主要介绍了Linux环境变量配置全攻略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-03-31
  • Linux 下使用shell脚本定时维护数据库的案例

    这篇文章主要介绍了Linux 下使用shell脚本定时维护数据库,本文通过案例分析给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-11
  • PHP编程 SSO详细介绍及简单实例

    这篇文章主要介绍了PHP编程 SSO详细介绍及简单实例的相关资料,这里介绍了三种模式跨子域单点登陆、完全跨单点域登陆、站群共享身份认证,需要的朋友可以参考下...2017-01-25
  • linux服务器快速卸载安装node环境(简单上手)

    这篇文章主要介绍了linux服务器快速卸载安装node环境(简单上手),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-22
  • Mysql命令大全(详细篇)

    一、连接Mysql格式: mysql -h主机地址 -u用户名 -p用户密码1、连接到本机上的MYSQL。首先打开DOS窗口,然后进入目录mysql/bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密...2015-11-08
  • PHP实现创建以太坊钱包转账等功能

    这篇文章主要介绍了PHP实现创建以太坊钱包转账等功能,对以太坊感兴趣的同学,可以参考下...2021-04-20
  • 查看Redis内存信息的命令

    Redis 是一个开源、高性能的Key-Value数据库,被广泛应用在服务器各种场景中。本文介绍几个查看Redis内存信息的命令,包括常用的info memory、info keyspace、bigkeys等。...2021-01-15
  • php微信公众账号开发之五个坑(二)

    这篇文章主要为大家详细介绍了php微信公众账号开发之五个坑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-02
  • 解决jmap命令打印JVM堆信息异常的问题

    这篇文章主要介绍了解决jmap命令打印JVM堆信息异常的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-12-04