php无限创建目录
创建目录在php教程中用到了mkdir函数,如果要无限创建目录就们利用递归就可以了。
<?php
$filepath = "test/upload/2010/image.gif";
createdir(dirname($filepath));
//接下来就可以move_uploaded_file了!/*
* 功能:循环检测并创建文件夹
* 参数:$path 文件夹路径
* 返回:
*/
function createdir($path){
if (!file_exists($path)){
createdir(dirname($path));
mkdir($path, 0777);
}
}
?>
原理是递归加判断目录是否存在,否则就创建。
eaccelerator加速php教程程序
什么是eaccelerator
概念:
eaccelerator 是一个免费开源的php加速、优化、编译和动态缓存的项目,它可以
通过缓存php代码编译后的结果来提高php脚本的性能,使得一向很复杂和离我们很
远的php脚本编译问题完全得到解决。通过使用eaccelerator,可以优化你的php代
码执行速度,降低服务器负载,可以提高php应用执行速度最高达10倍。
原理:
eaccelerator 通过把经过编译后的php代码缓存到共享内存中,并在用户访问的时
候直接调用从而起到高效的加速作用。它的效率非常高,从创建共享内存到查找编
译后的代码都在非常短的时间内完成,对于不能缓存到共享内存中的文件和代码,
eaccelerator还可以把他们缓存到系统磁盘上。
eaccelerator 同样还支持php代码的编译和解释执行,你可以通过encoder.php脚本
来对php代码进行编译达到保护代码的目的,经过编译后的代码必须运行在安装了
eaccelerator的环境下。eaccelerator编译后的代码不能被反编译,它不象其他一
些编译工具那样可以进行反编译,这将使得代码更加安全和高效。
注意:在共享内存里面寻找编译好的php程序时,会在很短的时间内产生一些锁定,
所以一个程序可以被多个进程同时执行。不适合放入共享内存的文件将被缓存到硬
盘上
eaccelerator安装配置
1、支持平台
由于aaccelerator提供了大部分基于共享内存的api,所以在*nix的平台上将得到更
好的支持,虽然也发布了基于windows平台的binary版本,但我在这里就只提供基于
*nix平台的配置和说明,目前可以支持的平台包括linux, freebsd, openbsd, mac
os x, solaris, aix en hp-ux。
2、系统要求
php4 or php5
autoconf
automake
libtool
m4
eaccelerator 只支持使用 mod_php 或者 fastcgi mode 安装的php
3、安装
先去eaccelerator官方下载最新版的源码包:
#tar -zxvf ./eaccelerator-0.9.5-beta2.tar.bz2
#cd eaccelerator-0.9.5-beta2
#export php_prefix="/usr/local" (把php安装目录导入到环境变量,freebsd默
认是/usr/local)
#$php_prefix/bin/phpize
#./configure --enable-eaccelerator=shared --with-php-
config=$php_prefix/bin/php-config
#make
#make install
4、ini文件配置
安装完成,下面开始配置php.ini文件,eaccelerator提供了两种配置和调用方式,
分别如下。
安装为 zend extension 模式:
zend_extension="/usr/local/lib/php/20050922/eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.log_file = "/var/log/httpd/eaccelerator_log"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
如果你使用了thread safe模式安装的php,你必须使用 “zend_extension_ts” 替
换第一行的 “zend_extension”.
安装为 php extension 模式:(这是大部分采用的方式)
extension="eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.log_file = "/var/log/httpd/eaccelerator_log"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
有关php.ini文件的详细配置说明,请参照源码目录的readme文档或者访问官方文档
:
完成安装配置后,我们最后要创建缓存目录
#mkdir /tmp/eaccelerator
#chmod 777 /tmp/eaccelerator
测试
php代码中使用eaccelerator加速
下面有一个测试的代码,你可以测试一下eaccelerator强大的威力:(该代码在
cli 模式下可能无效)
<?php
class test_cache {
var $pro = 'hello';
function test_cache() {
echo "object created!<br>/n";
}
function func() {
echo ', the world!';
}
function now($t) {
echo date('y-m-d h:i:s', $t);
}
}
$tt = eaccelerator_get("test_tt");
if (!$tt)
{
$tt = new test_cache;
eaccelerator_put("test_tt", $tt);
echo "no cached!<br>/n";
}
else {
echo "cached<br>/n";
}
echo $tt->pro;
$tt->func();
$tt->now(time() + 86400);
?>
目中把错误等级设置为:error_reporting(e_all | e_strict);
数组变量未定义也会报错,其实挺好的,但有时候真的不需要报该错误,php教程的解决办法是:
@$_get['unkown'];
这样就可以放置该错误提示出来了.
exception:
throw new exception("username already taken");
更甚的情况,如果你认为客户端并不想用过多的操作而仅仅想看到异常信息,你可以抛出一个unchecked exception:
throw new runtimeexception("username already taken");
另外,你可以提供一个方法来验证该username是否被占用。
很有必要再重申一下,checked exception应该让客户端从中得到丰富的信息。要想让你的代码更加易读,请倾向于用unchecked excetpion来处理程序中的错误(prefer unchecked exceptions for all programmatic errors)。
4. document exceptions.
你可以通过javadoc’s @throws 标签来说明(document)你的api中要抛出checked exception或者unchecked exception。然而,我更倾向于使用来单元测试来说明(document)异常。不管你采用哪中方式,你要让客户端代码知道你的api中所要抛出的异常。这里有一个用单元测试来测试indexoutofboundsexception的例子:
public void testindexoutofboundsexception() {
arraylist blanklist = new arraylist();
try {
blanklist.get(10);
fail("should raise an indexoutofboundsexception");
} catch (indexoutofboundsexception success) {}
}
上边的代码在请求blanklist.get(10)的时候会抛出indexoutofboundsexception,如果没有被抛出,将 fail("should raise an indexoutofboundsexception")显示说明该测试失败。通过书写测试异常的单元测试,你不但可以看到异常是怎样的工作的,而且你可以让你的代码变得越来越健壮。
下面作者将介绍界中使用异常的最佳实践(best practices for using exceptions)
1. 总是要做一些清理工作(always clean up after yourself)
如果你使用一些资源例如数据库教程连接或者网络连接,请记住要做一些清理工作(如关闭数据库连接或者网络连接),如果你的api抛出unchecked exception,那么你要用try-finally来做必要的清理工作:
删除指定数组下标元素我们利用unset函数来实现,下在看看关于unset语法
void unset ( mixed var [, mixed var [, ...]])
unset() 销毁指定的变量。注意在 php教程 3 中,unset() 将返回 true(实际上是整型值 1
$array = array(1=>'1',2=>'2',3=>'3',4=>'5',5=>'6');
print_r( $array );
array
(
[1] => 1
[2] => 2
[3] => 3
[4] => 5
[5] => 6
)
unset( $array[2]);
print_r($array);
array
(
[1] => 1
[3] => 3
[4] => 5
[5] => 6
)
本站原创,转载注明来源http://www.111cn.net 否则必究
<form action="index.php教程" method="post" enctype="multipart/form-data">
缩略图:<input type="file" name="files" />
<input type="submit" value="提交"/>
php处理代码
<?php
$temp_name = $_files[files][tmp_name]; //临时文件3$now_name = $_files[files][name]; //当前文件4
move_uploaded_file($temp_name,'./images/'.date('yyyymdhis').$now_name); //移动到指定的文件夹下面
?>
move_uploaded_file() 函数将上传的文件移动到新位置。
若成功,则返回 true,否则返回 false。
语法
move_uploaded_file(file,newloc)参数 描述
file 必需。规定要移动的文件。
newloc 必需。规定文件的新位置。
说明
本函数检查并确保由 file 指定的文件是合法的上传文件(即通过 php 的 http post 上传机制所上传的)。如果文件合法,则将其移动为由 newloc 指定的文件。
如果 file 不是合法的上传文件,不会出现任何操作,move_uploaded_file() 将返回 false。
如果 file 是合法的上传文件,但出于某些原因无法移动,不会出现任何操作,move_uploaded_file() 将返回 false,此外还会发出一条警告。
这种检查显得格外重要,如果上传的文件有可能会造成对用户或本系统的其他用户显示其内容的话。
相关文章
- 这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
- 今天小编就为大家分享一篇解决Pycharm的项目目录突然消失的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-22
- PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
- index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
- 这篇文章主要介绍了C#路径,文件,目录及IO常见操作,较为详细的分析并汇总了C#关于路径,文件,目录及IO常见操作,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 1.创建div元素: Javascript代码 复制代码 代码如下: <scripttypescripttype="text/javascript"> functioncreateElement(){ varcreateDiv=document.createElement("div"); createDiv.innerHTML="Testcreateadiveleme...2013-10-13
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-04docker 启动elasticsearch镜像,挂载目录后报错的解决
这篇文章主要介绍了docker 启动 elasticsearch镜像,挂载目录后报错的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-20- 这篇文章主要介绍了idea out目录与target目录的区别详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-08
- 这篇文章主要介绍了PHP编程 SSO详细介绍及简单实例的相关资料,这里介绍了三种模式跨子域单点登陆、完全跨单点域登陆、站群共享身份认证,需要的朋友可以参考下...2017-01-25
- 今天小编大家分享一篇C#获得程序的根目录以及判断文件是否存在的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-25
- 这篇文章主要介绍了PHP实现创建以太坊钱包转账等功能,对以太坊感兴趣的同学,可以参考下...2021-04-20
- 这篇文章介绍的是一个小技巧来获取node.js项目根目录,这个技巧非常实用。有需要的朋友们可以参考借鉴,下面来一起看看吧。...2016-10-02
- 我的第一个感觉就是用递归创建,具体思路如下: function Directory($dir){ if(is_dir($dir) || @mkdir($dir,0777)){ //查看目录是否已经存在或尝试创建,加一个@抑制符号是因为第一次创建失败,会报一个“父目录不存...2015-11-08
- 这篇文章主要为大家详细介绍了php微信公众账号开发之五个坑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-02
- 这篇文章主要介绍了JS创建Tag标签的方法,结合具体实例形式分析了javascript动态操作页面HTML元素实现tag标签功能的步骤与相关操作技巧,需要的朋友可以参考下...2017-06-15
- 这篇文章主要介绍了PHP如何通过date() 函数格式化显示时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-13
- 这篇文章主要介绍了python import 上级目录的导入,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-03
- 这篇文章主要介绍了解决docker挂载的目录无法读写问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-19
- 什么是cookie? cookie 是存储于访问者的计算机中的变量。每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie。你可以使用 JavaScript 来创建和取回 cookie 的值。 有关cookie的例子: 名字 cookie 当访...2014-05-31