首页 > 编程技术 > php

不修改php.ini文件修改php配置信息方法

发布时间:2016-11-25 15:39

如果你没有服务器权限但服务器有些功能给禁止了这时我们就可以通过下面的方法来尝试设置开启此功能哦,下面我给各位整理了不少。


php.ini常用到的修改信息(自定义设置)@
@ini_set('memory_limit', '64M'); /* 脚本最大占用内存大小 */

@ini_set('max_execution_time', '15'); /* 脚本最大执行时间 */

@ini_set('post_max_size', '12M'); /* 表单最大上传大小 */

@ini_set('upload_max_filesize', '2M'); /* 单个文件最大上传大小 */

@ini_set('session.name', 'anhuizhaopin_sessionid'); /* SESSIONID的名称 */

@ini_set('session.cookie_httponly', '1'); /* sessionid是否添加HTTPONLY属性 */

@ini_set('session.use_trans_sid', '0'); /* 不尝试从其他地方获得sessionid */

@ini_set('session.use_cookies', '1'); /* 使用cookies传递sessionid */

@ini_set('session.auto_start', '0'); /* 不自动开始session处理 */

@ini_set('session.cookie_lifetime', '3600'); /* session的生命周期 */

@ini_set('session.gc_maxlifetime', '3600'); /* gc时间 */

@ini_set('session.cache_expire', '180'); /* 客户端缓存时间 */

@ini_set('file_uploads', '1'); /* 是否启用上传文件 */

@ini_set('upload_tmp_dir', 'F:\\tmp\\'); /* 上传文件缓存目录 */

php读取大文件方法我们一般是一行行来讲取而不是一次性把文件全部写入内存中了,这样会导致php程序卡死,下面给大家整理一个例子。
 代码如下 复制代码


读取大文件最后几行数据:
/**
 * 取文件最后$n行
 * @param string $filename 文件路径
 * @param int $n 最后几行
 * @return mixed false表示有错误,成功则返回字符串
 */
function FileLastLines($filename,$n){
    if(!$fp=fopen($filename,’r')){
        echo ”打开文件失败,请检查文件路径是否正确,路径和文件名不要包含中文”;
        return false;
    }
    $pos=-2;
    $eof=”";
    $str=”";
    while($n>0){
        while($eof!=”n”){
            if(!fseek($fp,$pos,SEEK_END)){
                $eof=fgetc($fp);
                $pos–;
            }else{
                break;
            }
        }
        $str.=fgets($fp);
        $eof=”";
        $n–;
    }
    return $str;
}

echo nl2br(FileLastLines(‘sss.txt’,4));
/**  * 取文件最后$n行  * @param string $filename 文件路径  * @param int $n 最后几行  * @return mixed false表示有错误,成功则返回字符串  */ function FileLastLines($filename,$n){     if(!$fp=fopen($filename,'r')){         echo "打开文件失败,请检查文件路径是否正确,路径和文件名不要包含中文";         return false;     }     $pos=-2;     $eof="";     $str="";     while($n>0){         while($eof!="n"){             if(!fseek($fp,$pos,SEEK_END)){                 $eof=fgetc($fp);                 $pos--;             }else{                 break;             }         }         $str.=fgets($fp);         $eof="";         $n--;     }     return $str; } echo nl2br(FileLastLines('sss.txt',4));

 

function tail($fp,$n,$base=5)
{
assert($n>0);
$pos = $n+1;
$lines = array();
while(count($lines)< =$n){
try{
fseek($fp,-$pos,SEEK_END);
} catch (Exception $e){
fseek(0);
break;
}
$pos *= $base;
while(!feof($fp)){
array_unshift($lines,fgets($fp));
}
}
return array_slice($lines,0,$n);
}
var_dump(tail(fopen("access.log","r+"),10));
$fp = fopen($file, "r");
$line = 10;
$pos = -2;
$t = " ";
$data = "";
while ($line > 0) {
while ($t != "n") {
fseek($fp, $pos, SEEK_END);
$t = fgetc($fp);
$pos --;
}
$t = " ";
$data .= fgets($fp);
$line --;
}
fclose ($fp);
echo $data

无刷新功能我们用到很多很多的,下面我就来给各位介绍一个实例,就是实现php+ajax实现无刷新数据分页了,例子非常的简单大家只要按流程来操作就可以了哦。

index.php 文件如下图所示

 代码如下 复制代码

<?php
header("Content-type: text/html;charset=GBK");//输出编码,避免中文乱码
?>
<html>
<head>
<title>ajax分页演示</title>
<script language="javascript"" width=100% src="ajaxpg.js"></script>
<link rel="stylesheet" type="text/css" href="page.css">
</head>
<body>
<div id="result">
<?php
$page=isset($_GET['page'])?intval($_GET['page']):1;  //这句就是获取page=18中的page的值,假如不存在page,那么页数就是1。
$num=3;  //每页显示10条数据


$db=mysql_connect("localhost","root","123456");  //创建数据库连接
mysql_select_db("demo",$db) or die("数据库链接错误");  //选择要操作的数据库
mysql_query("set names gbk");
/*
首先咱们要获取数据库中到底有多少数据,才能判断具体要分多少页,具体的公式就是
总数据库除以每页显示的条数,有余进一。
也就是说10/3=3.3333=4 有余数就要进一。
*/


$result=mysql_query("select * from brand");
$total=mysql_num_rows($result); //查询所有的数据


$url='test.php';//设置ajax提交页面地址的URL,这里设置成test.php通过ajax把参数传递给test.php再把处理过的内容赋值到本页的div id=result。

//页码计算
$pagenum=ceil($total/$num);//获得总页数,也是最后一页
$page=min($pagenum,$page);//获得首页
$prepg=$page-1;//上一页
$nextpg=($page==$pagenum ? 0 : $page+1);//下一页
$offset=($page-1)*$num; //获取limit的第一个参数的值,假如第一页则为(1-1)*10=0,第二页为(2-1)*10=10。
$pagenav="<ul>";


//开始分页导航条代码:
$pagenav.="<li>显示第 <B>".($total?($offset+1):0)."</B>-<B>".min($offset+10,$total)."</B> 条记录</li><li>共 $total 条记录&nbsp;</li>";


//如果只有一页则跳出函数:
if($pagenum<=1) return false;


$pagenav.="<li> <a href=javascript:dopage('result','$url?page=1');>首页</a></li> ";
if($prepg) $pagenav.="<li> <a href=javascript:dopage('result','$url?page=$prepg');>前页</a></li> "; else $pagenav.=" <li>前页</li> ";
if($nextpg) $pagenav.="<li><a href=javascript:dopage('result','$url?page=$nextpg');>后页</a> </li>"; else $pagenav.=" <li>后页</li> ";
$pagenav.="<li> <a href=javascript:dopage('result','$url?page=$pagenum');>尾页</a></li> ";
$pagenav.="<li>第 $page 页</li><li>共 $pagenum 页</li></ul>";


//假如传入的页数参数大于总页数,则显示错误信息
If($page>$pagenum){
 Echo "Error : Can Not Found The page ".$page;
 Exit;
}
?></div><div id="results">
<?php
  echo $pagenav;//输出分页导航
?>
</div>
</body>
</html>

css代码

/* CSS Document */
/* CSS Document */
#result ul li{
height:20px;
width:auto;
display:block;
color:#999;
border:1px solid #999;
float:left;
list-style:none;
font-size:12px;
margin-left:5px;
line-height:20px;
vertical-align:middle;
text-align:center;
}
#result ul li a:link{
width:50px;
height:20px;
display:block;

line-height:20px;
background:#09C;
border:1px solid #fff;
color:#fff;
text-decoration:none;
}
#result ul li a:hover{
width:50px;
height:20px;
display:block;

line-height:20px;
background:#09C;
border:1px solid #fff;
color:#F60;
text-decoration:none;
}

ajaxpg.js文件如下

// JavaScript Document
var http_request=false;
  function send_request(url){//初始化,指定处理函数,发送请求的函数
 http_request=false;
//开始初始化XMLHttpRequest对象
if(window.XMLHttpRequest){//Mozilla浏览器
http_request=new XMLHttpRequest();
if(http_request.overrideMimeType){//设置MIME类别
  http_request.overrideMimeType("text/xml");
}
}
else if(window.ActiveXObject){//IE浏览器
try{
 http_request=new ActiveXObject("Msxml2.XMLHttp");
}catch(e){
 try{
 http_request=new ActiveXobject("Microsoft.XMLHttp");
 }catch(e){}
}
 }
if(!http_request){//异常,创建对象实例失败
window.alert("创建XMLHttp对象失败!");
return false;
}
http_request.onreadystatechange=processrequest;
//确定发送请求方式,URL,及是否同步执行下段代码
 http_request.open("GET",url,true);
http_request.send(null);
  }
  //处理返回信息的函数
  function processrequest(){
if(http_request.readyState==4){//判断对象状态
  if(http_request.status==200){//信息已成功返回,开始处理信息
 document.getElementById("results").style.display="none";
 document.getElementById(reobj).innerHTML=http_request.responseText;
}
else{//页面不正常
 alert("您所请求的页面不正常!");
}
}
  }
  function dopage(obj,url){
document.getElementById(obj).innerHTML="<font color='green' font-size='12'>正在读取数据...</font>";
send_request(url);
reobj=obj;
}
 

数据库文件如下

-- phpMyAdmin SQL Dump
-- version 2.8.1
-- http://www.phpmyadmin.net
--
-- 主机: localhost
-- 生成日期: 2010 年 01 月 22 日 14:41
-- 服务器版本: 5.0.22
-- PHP 版本: 5.2.12
--
-- 数据库: `demo`
--

-- --------------------------------------------------------

--
-- 表的结构 `brand`
--

CREATE TABLE `brand` (
  `id` int(7) NOT NULL auto_increment,
  `sp_brand` varchar(255) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=19 ;

--
-- 导出表中的数据 `brand`
--

INSERT INTO `brand` (`id`, `sp_brand`) VALUES (1, 'hello world'),
(2, '你好'),
(3, '恩'),
(4, 'fdsafdsafdsa'),
(5, 'fdsafdafdsafdas'),
(6, 'fdsafdsa'),
(7, 'fdsafdsafdas'),
(8, '恩'),
(9, '恩'),
(10, '恩'),
(11, '恩11'),
(12, '恩'),
(13, '恩'),
(14, '恩'),
(15, '恩'),
(16, '恩'),
(17, '恩'),
(18, '恩18');


下面介绍这些文件的功能


ajaxpg.js:ajax无刷新核心文件,一般不要去作修改。

index.php:实现ajax无刷新的文件了,这里调用了ajaxpg.js文件,配置了mysql用户密码,要和自己本地的一致,以及显示分页的效果。

page.css:这是分页的CSS样式文件,用来美化的,就不多介绍了。

brand.sql:这是MYSQL数据库的文件了,进行导入到MYSQL数据库中,同样,如果不会导入,可以参考PHPfensi.com中如何导入.sql文章即可。

ajax注册是现在我看到网站中所有网站几乎都会使用到的一个功能,下面我就来给各位整理一个关于ajax注册验证例子,希望此例子能帮助到各位哦。

html代码

 代码如下 复制代码

<script" width=100% src="ajax.js"></script>
<form>
<table>
<tr>
  <td>用户名:</td>
  <td><input type="text" id="txt1" onKeyUp="showHint(this.value)"></td>
 </tr>
 <tr align="center">
  <td colspan="2"><span id="txtHint"></span></td>
 </tr>
</table>
</form>

js文件代码

 代码如下 复制代码

var xmlHttp
function showHint(str)
{
if (str.length==0)
  {
  document.getElementById("txtHint").innerHTML=""
  return
  }
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
  {
  alert ("Browser does not support HTTP Request")
  return
  }
xmlHttp.onreadystatechange=stateChanged

var geturl="conn.php?q="+str
//sid是增加一个随机数 防止页面启用缓存技术·
geturl=geturl+"&sid="+Math.random()
geturl=encodeURI(geturl);
geturl=encodeURI(geturl);
xmlHttp.open("GET",geturl,true)
xmlHttp.send(null)
}
function stateChanged()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
 {
 document.getElementById("txtHint").innerHTML=xmlHttp.responseText
 }
}
function GetXmlHttpObject()
{
var xmlHttp=null;
try
 {
 // Firefox, Opera 8.0+, Safari
 xmlHttp=new XMLHttpRequest();
 }
catch (e)
 {
 // Internet Explorer
 try
  {
  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  }
 catch (e)
  {
  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
 }
return xmlHttp;
}

php操作

 代码如下 复制代码

<?php
$q=$_GET["q"];
$q = urldecode($q);

if (strlen($q) > 0)
{
  $conn = @mysql_connect("localhost","root","1010") or die ("MySql连接错误");
  mysql_select_db("xin",$conn);
  mysql_query("set names 'utf8'");
  
  $sql = "SELECT username FROM message WHERE username = '$q'";
  $query = mysql_query($sql);
  @$row = mysql_fetch_array($query);
  
  if(!empty($row['username']))
  {
   $response = "<font color=red>已经被注册!</font>";
  }else
  {
   $response = "<font color=blue>恭喜!可以注册!</font>";
  }
  
  echo $response;
}

?>

最后再给出数据库

 代码如下 复制代码

DROP DATABASE IF EXISTS `xin`;
CREATE DATABASE `xin` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `xin`;


CREATE TABLE `message` (
  `id` int(11) NOT NULL auto_increment,
  `username` varchar(20) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

在网上搜索了一下编程优化我们都会看到大量的文章,但都是一样的内容,下面我来给各位整理了我觉得最有用的5个PHP性能优化的编程习惯分享给各位,希望文章能给各位带来帮助哦。

1. 不要随便就复制变量
    有时候为了使 PHP 代码更加整洁,一些 PHP 新手(包括逐风自己)会把预定义好的变量复制到一个名字更简短的变量中,其实这样做的结果是增加了一倍的内存消耗,只会使程序更加慢。试想一下,在下面的例子中,如果用户恶意插入 512KB 字节的文字到文本输入框中,这样就会导致 1MB 的内存被消耗!

 代码如下 复制代码
坏习惯:
$description = $_POST['description'];
echo $description;
可以写成:
echo $_POST['description'];

2. 对字符串使用单引号
    PHP 引擎允许使用单引号和双引号来封装字符串变量,但是这个是有很大的差别的!使用双引号的字符串告诉 PHP 引擎首先去读取字符串内容,查找其中的变量,并改为变量对应的值。一般来说字符串是没有变量的,所以使用双引号会导致性能不佳。最好是使用字符串连接而不是双引号字符串。

 代码如下 复制代码
坏习惯:
$output = "This is a plain string";
可以写成:
$output = 'This is a plain string';
坏习惯:
$type = "mixed";
$output = "This is a $type string";
可以写成:
$type = 'mixed';
$output = 'This is a ' . $type .' string';

3. 使用 echo 函数来输出字符串
    使用 echo() 函数来打印结果出了有更容易阅读之外,在下个例子中,你还可以看到有更好的性能。
坏习惯:

 代码如下 复制代码
print($myVariable);
可以写成:
echo $myVariable;

4. 不要在 echo 中使用连接符
   很多 PHP 程序员(有包括逐风自己)不知道在用 echo 输出多个变量的时候,其实可以使用逗号来分开的,而不必用字符串先把他们先连起来,如下面的第一个例子中,由于使用了连接符就会有性能问题,因为这样就会需要 PHP 引擎首先把所有的变量连接起来,然后在输出,而在第二个例子中,PHP 引擎就会按照循序输出他们。

 代码如下 复制代码
坏习惯:
echo 'Hello, my name is' . $firstName . $lastName . ' and I live in ' . $city;
可以写成:
echo 'Hello, my name is' , $firstName , $lastName , ' and I live in ' , $city;

5. 使用 switch/case 代替 if/else
    对于只有单个变量的判断,使用 switch/case 语句而不是 if/else 语句,会有更好的性能,并且代码更加容易阅读和维护。
坏习惯:

 代码如下 复制代码
if($_POST['action'] == 'add') {
  addUser();
} elseif ($_POST['action'] == 'delete') {
  deleteUser();
} elseif ($_POST['action'] == 'edit') {
  editUser();
} else {
  defaultAction();
}
可以写成:
switch($_POST['action']) {
case 'add':
  addUser();
  break;
case 'delete':
   deleteUser();
  break;
case 'edit':
   editUser();
   break;
default:
   defaultAction();
   break;
}
标签:[!--infotagslink--]

您可能感兴趣的文章: