数据专栏

智能大数据搬运工,你想要的我们都有

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

相关推荐: 53个要点提高PHP编程效率 53个要点提高PHP编程效率. 良好的书写规范提高PHP代码执行效率【上】 良好的书写规范提高PHP代码执行效率【下】 七夕表白代码.zip PHP提高编程效率的50个方法 提升PHP编程效率的20个要素 Windows版YOLOv4目标检测实战:训练自己的数据集 2020学习前端常用网站,你用过吗
推荐群组: javascript研究小组
更多相关推荐
PHP 用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则 不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的“函数”(兄弟连PHP编程:PHP手册中说echo是语言结构,不是真正的函数,故把函数加 上了双引号)。   1、如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍。 2、$row[’id’] 的速度是$row[id]的7倍。   3、echo 比 print 快,并且使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接,比如echo $str1,$str2。   4、在执行for循环之前确定最大循环数,不要每循环一次都计算最大值,最好运用foreach代替。   5、注销那些不用的变量尤其是大数组,以便释放内存。   6、尽量避免使用__get,__set,__autoload。   7、require_once()代价昂贵。   8、include文件时尽量使用绝对路径,因为它避免了PHP去include_path里查找文件的速度,解析操作系统路径所需的时间会更少。   9、如果你想知道脚本开始执行(译注:即服务器端收到客户端请求)的时刻,使用$_SERVER[‘REQUEST_TIME’]要好于time()。   10、函数代替正则表达式完成相同功能。   11、str_replace函数比preg_replace函数快,但strtr函数的效率是str_replace函数的四倍。   12、如果一个字符串替换函数,可接受数组或字符作为参数,并且参数长度不太长,那么可以考虑额外写一段替换代码,使得每次传递参数是一个字符,而不是只写一行代码接受数组作为查询和替换的参数。   13、使用选择分支语句(译注:即switch case)好于使用多个if,else if语句。   14、用@屏蔽错误消息的做法非常低效,极其低效。   15、打开apache的mod_deflate模块,可以提高网页的浏览速度。   16、数据库连接当使用完毕时应关掉,不要用长连接。   17、错误消息代价昂贵。   18、在方法中递增局部变量,速度是最快的。几乎与在函数中调用局部变量的速度相当。   19、递增一个全局变量要比递增一个局部变量慢2倍。   20、递增一个对象属性(如:$this->prop++)要比递增一个局部变量慢3倍。
编程百科
2020-08-27 13:41:16
相关推荐: MySQL Storage Engine 小记 关于MySQL数据库的存储引擎 MySQL性能优化必备25条 linux mysql5.5安装与配置 PHP面试和PHP开发者都应掌握的10个问题 2018 年最新 PHP 面试题大全 2018经典PHP面试题大全 2018年最新PHP面试题
推荐群组: JBPM @net
更多相关推荐
PHP 问题 :1 MySQL里的存储引擎有什么不同,哪一个是默认的?答案: 1 我们可以一下存储引擎: 1. MyISAM(MySQL的默认引擎。 每个MyISAM表是分为三个文件存储在硬盘上的。文件名称是以表明开始并且有一个扩展文件名来指示文件的类型。 .frm 文件用来存储表的格式。 The data file has an数据文件被存储在 .MYD (MYData) 文件中。 索引文件的后缀是.MYI。) 2. InnoDB(InnoDB是一种事务安全(兼容ACID)类型的存储引擎。他拥有事务提交、回滚和灾难恢复功能以保护用户的数据。) 3. Merge 4. Heap (MEMORY)(内存存储引擎,将数据存储在内存中。之前我们熟悉的是HEAP表。) 5. BDB (BerkeleyDB)(Sleepycat软件公司为MySQL提供了Berkeley DB 事务存储引擎。这款引擎的缩写是BDB。 BDB表有许多非常棒的特性,包括灾难恢复并且也支持事务的提交和回滚。 ) 6. EXAMPLE 7. FEDERATED (这款存储引擎是以访问远程数据库来获得数据而非访问本地数据表 ) 8. ARCHIVE (ARCHIVE存储引擎通常用来在一个非常小的脚本中需要庞大数据并且没有索引的情况) 9. CSV (CSV存储引擎使用逗号分隔的格式将数据存储在文件中) 10. BLACKHOLE (BLACKHOLE存储引擎就像一个“黑洞”,它接受数据但是会直接抛出并不会存储。检索的结果集总会返回空) 问题: 2 hearder()函数在php中的作用是什么? 答案: 2 header()函数发送原生的HTTP头请求给客户端。我们可以使用header()函数重定向网页。使用header()函数需要注意的是在使用它之前不能有任何形式的输出语句。 问题: 3 在命令行中如何执行PHP脚本? 答案: 3 只需要运行PHP CLI(命令行界面)程序并且提供PHP脚本文件作为命令行参数即可。 问题: 4 假设你的Zend引擎支持语法,如何在你的配置中开启? 答案: 4 在php.ini file: 设置 short_open_tag=on 问题:5 购物车在线验证,如何配置Paypal? 答案: 5 我们不需要做任何额外的事情,只需要在提交之后跳转到payPal的地址,并且提供PatPal所需要的数据,如总价、地址即可。 问题: 6 nl2br()这个函数是用来干什么的? 答案: 6 在字符串所有新行之前插入 HTML 换行标记。 问题: 7 htaccess是什么?我们在什么地方并且为什么使用它? 答案: 7 .htaccess文件是apache服务器的配置文件 ,它为每个目录提供了一种配置参数。这个文件包含了一个或多个配置指令,然后放在特定的目录文件下,然后这些指令就会应用于这个目录以及它的所有子目录。 问题: 8 如何获得客户端的IP地址以及上一个页面的地址? 答案: 8 通过使用$_SERVER[‘REMOTE_ADDR’],$_SERVER[‘HTTP_REFERER’]。 问题: 9 选择LAMP(Linux, apache, MySQL, PHP)而不选择其他语言和操作系统的理由有哪些? 答案: 9 因为LAMP都是开源的。Linux的安全性要比window好很多。Apache在功能和安全性上比IIS强。MySQL是当下最流行的开源数据库。PHP比ASP或其他脚本语言发开快很多。 问题: 10 在MySQL中如何加密和解密MySQL表中的数据? 答案: 10 使用AES_ENCRYPT () 和AES_DECRYPT () 以上就是小编归纳总结的PHP面试和php开发者都应掌握的10个问题,以后有新的问题再随时分享哦!
编程百科
2020-08-27 13:41:09
相关推荐: 共享安装 cacti 过程中的一些经历 cacti 中文-linux - sun solaris linux下PHP5.5的安装【oci8,pdo-oci,memcache,Zend OPCache扩展】 linux下安装apche php Cacti在Solaris10下的安装 libxml2-2.7.4库(附编译安装使用教程).zip ubuntu系统 编译libxml2的库是遇到如下错误 9、交叉编译libxml2 php编译中配置libxml2的错误 ubuntu源码编译安装php常见错误解决办法
推荐群组: 高级语言虚拟机
更多相关推荐
PHP 大家好: 我买了细说PHP书来学习。在搭建环境时使用的是ubuntu系统 编译libxml2的库是遇到如下错误, In function 'open', inlined from 'xmlNanoHTTPSave__internal_alias' at nanohttp.c:1588:12: /usr/include/x86_64-linux-gnu/bits/fcntl2.h:51:24: error: call to '__open_missing_mode' declared with attribute error: open with O_CREAT in second argument needs 3 arguments make[2]: *** [nanohttp.lo] Error 1 make[2]: Leaving directory `/home/waveshare/work/PHP/libxml2-2.6.30' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/waveshare/work/PHP/libxml2-2.6.30' make: *** [all] Error 2 求解决。。。。。。
编程百科
2020-08-27 13:40:56
相关推荐: Rails源码研究之ActionView:一,基本架构和ERB 基于Ant+Velocity的简单代码生成器的思路与实现 smarty 基本配置、应用 Smarty PHP Template Programming and Applications smarty什么时候会从新编译template php初级到项目实战 smarty模板强制编译 PHP--Smarty的template模式
推荐群组: phper
更多相关推荐
PHP 从smarty.class.php文件中的下列代码可以看出来:/** * test if resource needs compiling * * @param string $resource_name * @param string $compile_path * @return boolean */ function _is_compiled($resource_name, $compile_path) { if (!$this->force_compile && file_exists($compile_path)) { if (!$this->compile_check) { // no need to check compiled file return true; } else { // get file source and timestamp $_params = array('resource_name' => $resource_name, 'get_source'=>false); if (!$this->_fetch_resource_info($_params)) { return false; } if ($_params['resource_timestamp'] <= filemtime($compile_path)) { // template not expired, no recompile return true; } else { // compile template return false; } } } else { // compiled template does not exist, or forced compile return false; } } 首先会看,是否设置了force_compile,如果为true,那么每次都要进行重新编译。 然后看是否要compile_check,如果为false,那么永远不会进行编译。 如果为true,那么进行检查,检查什么呢?检查文件的修改时间, 如果编译结果的时间>=原模板文件的修改时间,那么不进行重新编译,否则进行编译。 关键在于这个“等号”,我们应该将这个“=”去掉呢?还是他真的有必要? 有事,待续...
编程百科
2020-08-27 13:40:40
xombat 写道
robbin 写道
访问日志看lighttpd的access.log。
我想看的是spawn-fcgi的日志,也就是应用服务器上的访问日志,而这台服务器上lighttpd是没有开的,只开了spawn-fcgi,因此lighttpd的access.log中没有记录 看web server的lighttpd的access.log,然后自己写个shell脚本过滤掉静态资源的URL请求日志,就是应用服务器的访问日志了。
编程百科
2020-08-27 13:40:25
相关推荐: 从PHP5.2.6升级PHP5.3.1,验证码程序出错了。 安全而且好看的验证码 extjs 含有验证码的登陆窗口 自己开发一套微信支付接口(SDK)-微信开发15(PHP) php订单设计 ThinkPHP5.0框架开发 Thinkphp5实战开发企业官网【含auth权限认证】 PHP表单验证
推荐群组: phper
更多相关推荐
PHP
接触PHP一个星期了,boss要写一个图片验证框。在网上查了很多的资料,总结后得到如下最终的代码。以下代码生成的验证码有干扰条,干扰像素,字体旋转等。如果有不足的地方请回帖。 60) $temp[2] = 60; $temp = HsvToRgb($temp[0], $temp[1], $temp[2]); $textcolor[$i] = imagecolorallocate($image, $temp[0], $temp[1], $temp[2]); } for ($i = 0; $i < $disturbpiontnum && $disturbpiont; ++ $i) //加入干扰象素 { $randpixelcolor = ImageColorallocate($validatepic, rand(0, 255), rand(0, 255), rand(0, 255)); imagesetpixel($validatepic, rand(1, $width -1), rand(1, $height -1), $randpixelcolor); } // 干扰线使用颜色较明亮的颜色 $temp = RgbToHsv(rand(0, 255), rand(0, 255), rand(0, 255)); if ($temp[2] < 200) $temp[2] = 255; $temp = HsvToRgb($temp[0], $temp[1], $temp[2]); $randlinecolor = imagecolorallocate($image, $temp[0], $temp[1], $temp[2]); // 画干扰线 for ($i = 0; $i < $disturblinenum && $disturbline; $i++) imageline($validatepic, rand(1, 239), rand(1, 39), rand(1, 239), rand(1, 39), $randpixelcolor); for ($i = 0; $i < $strnum; ++ $i) { $image = imagecreatetruecolor($size, $size); // 刷新画板 imagefilledrectangle($image, 0, 0, $size, $size, $back); // 画出背景色 imagefttext($image, 13, 0, 5, 20, $textcolor[$i], $font_file, $randStr[$i]); $image = imagerotate($image, $degrees[$i], $back); imagecolortransparent($image, $back); imagecopymerge($validatepic, $image, 5 + 30 * $i, 5, 0, 0, imagesx($image), imagesy($image), 100); } imagerectangle($validatepic, 0, 0, $width -1, $height -1, $border); // 画出边框 header('Content-type: image/png'); imagepng($validatepic); imagedestroy($validatepic); imagedestroy($image); $_SESSION['code'] = $validate;//将验证码存入session,如果实际应用,请md5. ?>
 字体文件和该文件放在同一目录下即可,如果不是请设置 $font_file
需要设置背景颜色请修改 $back = imagecolorallocate($image, 255, 255, 255); // 背景色
显示图框的大小会随着设置显示的字符数变化。使用起来还是比较方便的。
 
编程百科
2020-08-27 13:40:19
相关推荐: rails3项目解析之5——rails on windows Linux真是Java开发者的天然选择 Macbook Pro 471 初步使用感觉 连接mysql数据库时出现1045错误的解决方法。 mysql 1251错误解决方法 Mysql常见错误提示及解决方法 linux中PHP链接MySQL主机127.0.0.1与localhost PHP连接mysql数据库出现连接失败的解决方法
推荐群组: Ubuntu For Fun
更多相关推荐
PHP 前段时间跑在客户的几台服务器上的应用mysql连接都失败,出现10055的错误提示,这些应用都是通过localhost连接本机数据库的,因为之前同样的应用安装在其他客户的服务器上运行都是没问题的,排除程序的问题,后来查到10055是windows的一个错误号,意思是说虚拟空间不足,原来客户在安装windows的时候没有分配虚拟空间,调整windows的虚拟内存大小即解决问题。
编程百科
2020-08-27 13:40:10
相关推荐: 最新SpringMVC + spring3.1.1 + hibernate4.1.0 集成及常见问题总结 精彩PuTTY 中文教程 请注意Rails2.3自带的memcache-client有性能问题 由apache error.log中的"core_output_filter"错误引出的东西 ffmpeg mplayer x264 代码重点详解 详细分析 【框架】Spring MVC ElasticSearch_new Android知识点大扫描
推荐群组: Hello World 达人
更多相关推荐
PHP
引用
“An established connection was aborted by the software in your host machine: core_output_filter: writing data to the network” 这是apache error.log文件中的一条记录,中文是:
引用
"[Sun Dec 21 21:03:30 2008] [info] [client 172.18.204.172] (OS 10053)您的主机中的软件放弃了一个已建立的连接。 : core_output_filter: writing data to the network" 根据这个错误,找到三种解决方式: 1. http://httpd.apache.org/docs/2.0/faq/error.html#error.acceptex 他说这是因为使用了EnableSendfiile或者EnableMMAP的原因,应该将它们设为disable,我把两个都设为disable也没有解决这个问题,看来不是这两个配置指令的原因。 2. http://bugs.php.net/bug.php?id=25570 上面链接中的问题是围绕一个php bug来说的, http://bugs.php.net/bug.php?id=32176&thanks=6 这篇文章说两者可能是一样的,都是bug。我倒愿意这个问题是bug,可是反馈说不是不是,这只是正常现象,说什么
引用
“Exactly what problem are you reporting? Just that this message is logged to the error_log when a client aborts a connection (and so, may happen a lot)? That is expected behaviour.” ——他说的不实,如果是远程主机造成的问题,那么会出现这样的语句:
引用
“远程主机强迫关闭了一个现有的连接。 : core_output_filter: writing data to the network”。 一个是“远程主机”,一个是“您的主机”,两个一个服务器一个客户机根本不一样,因此这个问题虽然关闭,但仍然没有解决。3. http://ask.metafilter.com/16184/Why-does-Apache-stop-serving-one-file-after-I-request-another 这里讲述的故事很好,回答问题者也非常有钻研精神,他好像把google出来的与这个相关的问题作了总结,然后说出一些解决方式,它主要将问题归结为10053 windows error,然后推断这个错误原因是因为防火墙的问题,不知道这样是否可以解决,明天有时间再测一下。 还有其他一些说法,有的人认为这个问题是网卡的问题: http://eudorabb.qualcomm.com/showpost.php?p=3046&postcount=4 ,还有的居然还说这个
引用
“These logs appear harmless because the clients seem "happy", but they are filling up my error log very quickly.” ,对客户来说无上大碍,只是在服务器上写一些莫名其妙的错误语句令人费解。这种意见也不能不信,有时间也要测试一下。
编程百科
2020-08-27 13:40:00
相关推荐: pycul写的对url地址的性能测试脚本 图片云存储的技术实现 使用libcurl库,开发简单的ftp上传工具 java后台+微信小程序 实现完整的点餐系统 libcurl库中curl_getinfo()返回值详解 libcurl中curl_easy_setopt()和curl_easy_perform()函数使用中文详解 libcurl 探索之旅:Multi Interface 中的 curl_multi_fdset 函数究竟是干什么的 2019年高教社杯全国大学生数学建模C题优秀论文(附代码)
推荐群组: D语言
更多相关推荐
PHP array 'url' => 'http://tc-apptest-zhangmen01.tc.google.com:2580/index.php?sex=male' (length=65) 'content_type' => 'text/html' (length=9) 'http_code' => 302 'header_size' => 169 'request_size' => 256 'filetime' => -1 'ssl_verify_result' => 0 'redirect_count' => 0 'total_time' => 0.005 'namelookup_time' => 0.001 'connect_time' => 0.003 'pretransfer_time' => 0.003 'size_upload' => 0 'size_download' => 211 'speed_download' => 42200 'speed_upload' => 0 'download_content_length' => 211 'upload_content_length' => 0 'starttransfer_time' => 0.005 'redirect_time' => 0 以上是我程序中一条curl_getinfo()语句得出来的信息: 下面分析各个元素表示的信息: url是这次curl连接的地址,http_code是302,表示这个url地址表示的文件中存在重定向,而redirect_count=0和redirect_time=0表示这次curl连接没有跟踪重定向,这是curl默认的参数设置,如果设置一下: curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); 那么curl_getinfo()的信息就会变成这样: array 'url' => 'http://tc-apptest-zhangmen01.tc.google.com:2580/phpinfo.php' (length=58) 'content_type' => 'text/html' (length=9) 'http_code' => 200 'header_size' => 319 'request_size' => 458 'filetime' => -1 'ssl_verify_result' => 0 'redirect_count' => 1 'total_time' => 0.018 'namelookup_time' => 0 'connect_time' => 0 'pretransfer_time' => 0 'size_upload' => 0 'size_download' => 39333 'speed_download' => 2185166 'speed_upload' => 0 'download_content_length' => 211 'upload_content_length' => 0 'starttransfer_time' => 0.002 'redirect_time' => 0.008 上面的url是从上一个url重定向到的新的url,这个url没有在重定向,因此它的http_code是200,而redirect_count和redirect_time都不再是0. 另外connect_time是建立连接的时间,在我测试了好几次之后发现connect_time总是等于pretransfer_time(这个时间是从一开始到开始传输数据的时间),但是不能就这么判定两者永远相等。那么两者时间会差在哪里呢?因为建立连接后就开始传输数据,因此我估计两者在截至的时间上相同,如果不同的话,估计是在计算时间的开始点上。pretransfer_time是从开始到传输数据,起点是在最开始,而connect_time的定义是连接花费时间,起点是开始连接。想了很长时间也是不明白,请求明白人指点。 nameloopup time是从开始到名字解析花费的时间。 size_upload为什么总是0呢?即使我使用了POST方法传输了数据也还是0,什么情况下才不是0呢? size_download是页面的content-lenght值,而speed_download是size_download/total_time的出来的。
编程百科
2020-08-27 13:39:37
相关推荐: 为图片写水印的时候中文乱码 PHP验证框 ASP.NET加上水印 新版小程序去水印源码.zip PHP上传 PHP代码实现给图片加文字水印 php文字水印和php图片水印实现代码 php gif图片加水印代码
推荐群组: EXT
更多相关推荐
PHP
用PHP给上传图片加水印的程序是通过判断文件类型建立图形,然后把其复制到原建立的图形上,填充并建立rectangle,以备写入imagestring()或是原已经定好的图像程序当中判断水印类型:一是字符串,另是增加一个图形对象在上面。如果你对PHP的GD库比较熟悉,看懂这篇文章一点都不难了!
/*****************************************************
参数说明:
$max_file_size  : 上传文件大小限制, 单位BYTE
$destination_folder : 上传文件路径
$watermark   : 是否附加水印(1为加水印,其他为不加水印);
使用说明:
1. 将PHP.INI文件里面的"extension=php_gd2.dll"一行前面的;号去掉,因为我们要用到GD库;
2. 将extension_dir =改为你的php_gd2.dll所在目录;
****************************************************/
//上传文件类型列表
$uptypes=array(
    'image/jpg', 
    'image/jpeg',
    'image/png',
    'image/pjpeg',
    'image/gif',
    'image/bmp',
    'image/x-png'
);
$max_file_size=2000000;     //上传文件大小限制, 单位BYTE
$destination_folder="uploadimg/"; //上传文件路径
$watermark=1;      //是否附加水印(1为加水印,其他为不加水印);
$watertype=1;      //水印类型(1为文字,2为图片)
$waterposition=1;     //水印位置(1为左下角,2为右下角,3为左上角,4为右上角,5为居中);
$waterstring=" http://www.hackhome.com/ ";  //水印字符串
$waterimg="xplore.gif";    //水印图片
$imgpreview=1;      //是否生成预览图(1为生成,其他为不生成);
$imgpreviewsize=1/2;    //缩略图比例
?>


ZwelL图片上传程序




  上传文件:
 
 

  允许上传的文件类型为:

if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
    if (!is_uploaded_file($_FILES["upfile"][tmp_name]))
    //是否存在文件
    {
         echo "图片不存在!";
         exit;
    }
    $file = $_FILES["upfile"];
    if($max_file_size < $file["size"])
    //检查文件大小
    {
        echo "文件太大!";
        exit;
    }
    if(!in_array($file["type"], $uptypes))
    //检查文件类型
    {
        echo "文件类型不符!".$file["type"];
        exit;
    }
    if(!file_exists($destination_folder))
    {
        mkdir($destination_folder);
    }
    $filename=$file["tmp_name"];
    $image_size = getimagesize($filename);
    $pinfo=pathinfo($file["name"]);
    $ftype=$pinfo['extension'];
    $destination = $destination_folder.time().".".$ftype;
    if (file_exists($destination) && $overwrite != true) 
  {
        echo "同名文件已经存在了";
        exit;
    }
    if(!move_uploaded_file ($filename, $destination))
    {
        echo "移动文件出错";
        exit;
    }
    $pinfo=pathinfo($destination);
    $fname=$pinfo[basename];
    echo " 已经成功上传
文件名:  ".$destination_folder.$fname."
";
    echo " 宽度:".$image_size[0];
    echo " 长度:".$image_size[1];
    echo "
大小:".$file["size"]." bytes";
    if($watermark==1)
    {
        $iinfo=getimagesize($destination,$iinfo);
        $nimage=imagecreatetruecolor($image_size[0],$image_size[1]);
        $white=imagecolorallocate($nimage,255,255,255);
        $black=imagecolorallocate($nimage,0,0,0);
        $red=imagecolorallocate($nimage,255,0,0);
        imagefill($nimage,0,0,$white);
        switch ($iinfo[2])
        {
            case 1:
            $simage =imagecreatefromgif($destination);
            break; 
case 2:
            $simage =imagecreatefromjpeg($destination);
            break;
            case 3:
            $simage =imagecreatefrompng($destination);
            break;
            case 6:
            $simage =imagecreatefromwbmp($destination);
            break;
            default:
            die("不支持的文件类型");
            exit;
        }
        imagecopy($nimage,$simage,0,0,0,0,$image_size[0],$image_size[1]);
        imagefilledrectangle($nimage,1,$image_size[1]-15,80,$image_size[1],$white);
        switch($watertype)
        {
            case 1:   //加水印字符串
            imagestring($nimage,2,3,$image_size[1]-15,$waterstring,$black);
            break;
            case 2:   //加水印图片
$simage1 =imagecreatefromgif("xplore.gif");
            imagecopy($nimage,$simage1,0,0,0,0,85,15);
            imagedestroy($simage1);
            break;
        }
        switch ($iinfo[2])
        {
            case 1:
            //imagegif($nimage, $destination);
            imagejpeg($nimage, $destination);
            break;
            case 2:
            imagejpeg($nimage, $destination);
            break;
            case 3:
            imagepng($nimage, $destination);
            break;
            case 6:
            imagewbmp($nimage, $destination);
            //imagejpeg($nimage, $destination);
            break; 
}
        //覆盖原上传文件
        imagedestroy($nimage);
        imagedestroy($simage);
    }
    if($imgpreview==1)
    {
    echo "
图片预览:
";
    echo "\"图片预览:\r文件名:".$destination."\r上传时间:\"";
    }
}
?>
编程百科
2020-08-27 13:39:22
查询分页,我这样做,先查一次总数 select count(*) from tablea where where... 再查一次结果 select a,b from tablea where where... , 就可以了。 如果愿意,也可以适当缓存结果, 应该还可以通过服务端语言滚动结果集游标的办法来分页,但未试过。
编程百科
2020-08-27 13:39:07
相关推荐: WinHEC 大会的牛人们( WinHEC China 2008 主讲人)(连载) windows7驱动那些事- WinHEC 大课(连载) WOW, Windows Live Writer is released![转载] 七夕表白代码.zip 参加WinHEC 2008 China大会(4日) WinHEC 2008 China 我眼中的WinHEC大会台前幕后 WinHEC大会
推荐群组: 篮球俱乐部
更多相关推荐
PHP 先告诉你WEX和COSD是什么Windows 体验团队(WEX:Windows Experience team),主要负责客户端的反馈以及以用户为中心的特性; 核心操作系统部门 (COSD:Core Operating System Division)主要负责核心、网络、设备支持。 大牛介绍: 我最喜欢的专家(或者叫 有技术的管理者) Steven Sinofsky Steven Sinofsky 是Windows和Windows Live研发工程群组的高级副总裁,设计整个Windows和Windows Live的用户体验相关架构和细节。 Windows Vista的很多核心技术就似乎他们做的(现在你知道觉得vista好,或者在使用上别扭的崩溃的时候,应该念叨谁了吧),包括用户界面,设备支持,图形和多媒体以及微软互联网浏览器 IE(对了,就是那个IE)。 Windows Live服务体验,也是他们鼓捣出来的,不知道下面这些服务你用过那个.我自己是都有尝试 Windows Live Hotmail, Windows Live Messenger,Windows LiveSpace.
编程百科
2020-08-27 13:38:55
相关推荐: WinHEC 大会的牛人们( WinHEC China 2008 主讲人)(连载) windows7驱动那些事- WinHEC 大课(连载) WOW, Windows Live Writer is released![转载] 参加WinHEC 2008 China大会(4日) WinHEC 2008 China 我眼中的WinHEC大会台前幕后 WinHEC大会
推荐群组: 电脑DIY
更多相关推荐
PHP
先告诉你WEX和COSD是什么
Windows 体验团队(WEX:Windows Experience team),主要负责客户端的反馈以及以用户为中心的特性; 核心操作系统部门
(COSD:Core Operating System Division)主要负责核心、网络、设备支持。
大牛介绍:
我最喜欢的专家(或者叫 有技术的管理者) Steven Sinofsky


Steven Sinofsky 是Windows和Windows Live研发工程群组的高级副总裁,设计整个Windows和Windows Live的用户体验相关架构和细节。
Windows Vista的很多核心技术就似乎他们做的(现在你知道觉得vista好,或者在使用上别扭的崩溃的时候,应该念叨谁了吧),包括用户界面,设备支持,图形和多媒体以及微软互联网浏览器 IE(对了,就是那个IE)。
Windows Live服务体验,也是他们鼓捣出来的,不知道下面这些服务你用过那个.我自己是都有尝试
Windows Live Hotmail, Windows Live Messenger,Windows LiveSpace.
 
编程百科
2020-08-27 13:38:47
相关推荐: Apache2.2.4和php5.2.1配置方法 apache_2.2.14+php-5.2.11+mysql5.0.18 SugarCE-5.0 安装指南 PHP环境搭建 玩转测试环境搭建 网站建设-1小时学会建站,采用PHPWAMP搭建网站[全程实战] PHP+Laravel实战博客项目 PHP底层内核源码与扩展开发
推荐群组: D语言
更多相关推荐
PHP 搭建PHP开发环境:1.需要下载软件或者开发包apache,php 2.安装apache,将apache安装在c:\apache下面,把php包放到c:\php下面 3.修改apache配置C:\Apache2.2\conf\httpd.txt 把这段代码放到文件末尾 LoadFile "c:/php/libmysql.dll" LoadModule php5_module "c:/php/php5apache2_2.dll" AddType application/x-httpd-php .php PHPIniDir "C:/php" 说明(1)Listen 80为服务器监听端口 (2) DirectoryIndex index.html index.php 为首页文件 4.修改c:\php\php.ini文件中extension_dir = "c:/php/ext/"
编程百科
2020-08-27 13:38:14
2005-1-8:接下来要用Python做两项工作: 1,网站的后台改造,用Python完成核心代码 会用到的技术:XML的读写,数据库的操作,XSLT的解析,代码的WebService化 2,一个网页爬虫机器人,抓取其他网站内容 正则表达式 其实对于一个项目的开发,语言并不是最重要的,关键是解决问题的方法和这种语言所提供的解决方案,为何选择Python来做这两个工作?开发快速,字符串处理能力强,移植性好 今天就先来测试一下Python的正则表达式能力 任务:读取tomcat的日志文件,并且把日期开头的内容显示出来,例如:xxxx-xx-xx import re regx = "\d\d\d\d-\d\d-\d+" f = open("c:\stdout.log","r"); i = 0 for str in f.readlines();: if re.search(regx,str);: Response.write(str+"
"); if i>10:break#由于是测试,只分析十行 i=i+1 f.close();; 代码很简单,关于正则表达式这里不做过多说明,由此也可以看出语言不是最重要的,重要的是解决方案。以下简单介绍一下Python的正则表达式,想了解更多到Google搜索Python+Regx
引用
样本规则表达式
ABC([d-w]*\d\d?)+XYZ
对于要匹配这个表达式的字符串,它必须以 "ABC" 开头、以 "XYZ" 结尾 -- 但它的中间必须要有什么呢?中间子表达式是 ([d-w]*\d\d?),而且后面跟了“一或多”运算符。所以,字符串的中间必须包括一个(或者两个,或者一千个)与括号中的子表达式匹配的字符或字符串。字符串 "ABCXYZ" 不匹配,因为它的中间没有必要的字符。
不过这个内部子表达式是什么呢?它以 d-w 范围内的零或多个字母开头。一定要注意:零字母是有效匹配,虽然使用英语单词 "some"(一些)来描述它,可能会感到很别扭。接着,字符串必须恰好有一个数字;然后有零或一个附加数字。(第一个数字字符类没有循环运算符,所以它只出现一次。第二个数字字符类有 "?" 运算符。)总而言之,这将翻译成“一个或两个数字”。以下是一些与规则表达式匹配的字符串:
匹配样本表达式的字符串
ABC1234567890XYZ
ABCd12e1f37g3XYZ
ABC1XYZ
还有一些表达式与规则表达式不匹配(想一想,它们为什么不匹配):
不匹配样本表达式的字符串
ABC123456789dXYZ
ABCdefghijklmnopqrstuvwXYZ
ABcd12e1f37g3XYZ
ABC12345%67890XYZ
ABCD12E1F37G3XYZ
需要一些练习才能习惯创建和理解规则表达式。但是,一旦掌握了规则表达式,您就具有了强大的表达能力。也就是说,转而使用规则表达式解决问题通常会很容易,而这类问题实际上可以使用更简单(而且更快速)的工具,如 string,来解决。
一个用来测试Python正则表达式的工具: http://kodos.sourceforge.net/ 图形界面,简单易用,适合学习Python的正则表达式 一个正则表达式标记的中文说明: http://hedong.3322.org/archives/000244.html
编程百科
2020-08-27 13:37:40
相关推荐: 探讨一下,双linux主机,每台主机启8个tomcat,共享存储的解决方案 LVM - 很好很强大 Linux文件系统简介 python实现同一局域网共享文件 python局域网下载文件 【python小技巧】利用python在1分钟搭建一个局域网内共享文件的http-server Python实现简易局域网视频聊天工具 python共享文件夹
推荐群组: Ubuntu For Fun
更多相关推荐
Python 要做一个小工具来计算文件服务器上的某一个文件目录下的列表并且和本地的某个文件目录比较 目录有韩文,文件服务器有密码 想试试PYTHON 刚开始就遇到了问题 怎么得到局域网内的某一机器的文件目录下的列表? 求助
编程百科
2020-08-27 13:37:30
相关推荐: 麻烦大家解释下面函数是怎么运行的 Java之Lambda初步学习 Java 语言中的函数编程 Python学习(13)--Lambda表达式和switch语句的实现 python--lambda和def函数 Python学习--Lambda使用 Python学习之路三--(lambda应用) Python3学习(16)--匿名函数lambda
推荐群组: C++语言
更多相关推荐
Python         主题:lambda的一般用法        环境: winxp pro + sp2 + python2.5         备注: 请注意,凡是在源代码文件中使用了中文字符,请最好保存为utf-8格式         描述: lambda提供了一个运行时动态创建函数的方法         代码:
python 代码
  # lambda.py    def  fun1(n):        return   lambda  m:m**n      def  fun2(m, n):        return  m+n      # 演示通常的lambda用法    f1 =  lambda  x,y,z: x*2+y+z   print  f1(3,2,1)      # 动态生成一个函数    f2 = fun1(2)   print  f2(4)      # lambda用作函数参数的写法    print  fun2(3, ( lambda  x:x+1)(2))           测试:保存为文件,直接执行即可
编程百科
2020-08-27 13:37:19
相关推荐: Python排序 What's New in Python3.0 欢迎大家贴出自己认为优雅简约的ruby代码 python3字典的排序 转载:python list 元素为 dict 时的排序 [work] Python字典dict转换为列表list Python----字典(dict)按值(value)排序 Python3-读取数据并转为dict list字典列表的方法
推荐群组: Python
更多相关推荐
Python         主题:列表(list)和字典(dict)数据排序        环境: winxp pro + sp2 + python2.5         备注: 请注意,凡是在源代码文件中使用了中文字符,请最好保存为utf-8格式         代码:
python 代码
  # sort.py    # 这个类用来演示如何对自定义对象进行排序    class  Sortobj:       a = 0       b = ''        def   __init__ ( self , a, b):            self .a = a            self .b = b        def  printab( self ):            print   self .a,  self .b      # 演示对字符串列表进行排序    samplelist_str = ['blue','allen','sophia','keen']   print  samplelist_str   samplelist_str.sort()   print  samplelist_str      print  '\n'      # 演示对整型数进行排序    samplelist_int = [34,23,2,2333,45]   print  samplelist_int   samplelist_int.sort()   print  samplelist_int      print  '\n'      # 演示对字典数据进行排序    sampledict_str = {'blue':'5555@sina.com',                     'allen':'222@163.com',                     'sophia':'4444@gmail.com',                     'ceen':'blue@263.net'}   print  sampledict_str   # 按照key进行排序    print  sorted(sampledict_str. items (), key= lambda d: d[0])   # 按照value进行排序    print  sorted(sampledict_str. items (), key= lambda d: d[1])      # 构建用于排序的类实例    obja = Sortobj(343, 'keen')   objb = Sortobj(56, 'blue')   objc = Sortobj(2, 'aba')   objd = Sortobj(89, 'iiii')      print  '\n'      samplelist_obj = [obja, objb, objc, objd]   # 实例对象排序前    for  obj  in  samplelist_obj:       obj.printab()   print  '\n'   # 按照对象的a属性进行排序    samplelist_obj.sort( lambda  x,y:  cmp (x.a, y.a))   for  obj  in  samplelist_obj:       obj.printab()   print  '\n'   # 按照对象的b属性进行排序    samplelist_obj.sort( lambda  x,y:  cmp (x.b, y.b))   for  obj  in  samplelist_obj:       obj.printab()           测试:保存为文件,直接执行即可
编程百科
2020-08-27 13:37:13
相关推荐: 话说Python:非主流编程语言 Ruby和Python的语法差别 Python视频教程入门到精通全集下载 python小例子系列之索引 Python索引示例 python的索引 Python十大装B语法 Python:索引总结
推荐群组: Python
更多相关推荐
Python 0   python小例子系列启动之公示        1    python小例子之1 -- 递归遍历目录        2    python小例子之2 -- 处理命令行参数        3    python小例子之3 -- 解析xml文本        4    python小例子之4 -- 列表(list)和字典(dict)数据排序        5    python小例子之5 -- lambda的一般用法        6    python小例子之6 -- pop3协议收取邮件        7    python小例子之7 -- 生成md5串        8    python小例子之8 -- decorator的使用 9 python小例子之9 -- for语句的72变
编程百科
2020-08-27 13:37:04
python提供了两个很强大的函数os.walk/os.path.walk来干这个脏活.前面那个的界面很简洁,后面那个可以有细腻的控制(和本例差不多). 不过,就像LZ给的例子,手写其实也很简洁. 不过注意到一点,考虑到跨平台,目录间的分隔符还是需要用os.sep比较安全一点.
编程百科
2020-08-27 13:36:49
相关推荐: 小实例之解析xml文本 对接成功Boss系统 Compass配置说明及注意事项2 python小例子之3 -- 解析xml文本 python3.6-XML解析方法 使用BeautifulSoup4解析XML 21天通关Python(仅视频课)
推荐群组: Groovy on Grails
更多相关推荐
Python         主题: 解析xml文本        环境: winxp pro + sp2 + python2.5         备注: 请注意,凡是在源代码文件中使用了中文字符,请最好保存为utf-8格式                      测试用例sample.xml也请用utf-8格式保存         代码:        
python 代码
  # parsexml.py    # 本例子参考自python联机文档,做了适当改动和添加       import   xml .parsers.expat      # 控制打印缩进    level = 0      # 获取某节点名称及属性值集合    def  start_element(name, attrs):        global  level        print  '  '*level, 'Start element:', name, attrs       level = level + 1      # 获取某节点结束名称    def  end_element(name):        global  level       level = level - 1        print  '  '*level, 'End element:', name          # 获取某节点中间的值    def  char_data(data):        if (data == '\n'):            return         if (data.isspace()):            return         global  level        print  '  '*level, 'Character data:', data      p =  xml .parsers.expat.ParserCreate()      p.StartElementHandler = start_element   p.EndElementHandler = end_element   p.CharacterDataHandler = char_data   p.returns_unicode =  False       f =  file ('sample. xml ')   p.ParseFile(f)   f. close ()           测试用例:
xml 代码:sample.xml
  xml   version = "1.0" ?>    < contacts   id = "bluecrystal" >    < item   name = "keen"   fff = "ddd" >         < telephone   type = "phone" > 222222222 telephone >         < telephone   type = "mobile" > 134567890 telephone >    item >    < item   name = "bcm" >         < telephone   type = "phone" > 11111111 telephone >         < telephone   type = "mobile" > 15909878909 telephone >    item >    contacts >                   测试结果:
Start element: contacts {'id': 'bluecrystal'}     Start element: item {'fff': 'ddd', 'name': 'keen'}       Start element: telephone {'type': 'phone'}         Character data: 222222222       End element: telephone       Start element: telephone {'type': 'mobile'}         Character data: 134567890       End element: telephone     End element: item     Start element: item {'name': 'bcm'}       Start element: telephone {'type': 'phone'}         Character data: 11111111       End element: telephone       Start element: telephone {'type': 'mobile'}         Character data: 15909878909       End element: telephone     End element: item   End element: contacts          
编程百科
2020-08-27 13:36:41
相关推荐: Ruby和Python的语法差别 督促自己-清风Python练习贴 我眼中的Python python小例子系列启动之公示 python小例子系列之索引 如何用Python投机倒把几天“暴富” python 斐波那契数列之你不知道的神奇故事 用Python开始机器学习(6:朴素贝叶斯分类器)
推荐群组: Python
更多相关推荐
Python         今天我开始了python小例子的工作,其实初衷很简单,就是想让更多的人了解python。        为此我给这个系列定了下面几个编写的原则:         一次只针对一个单纯的主题来进行讲解;         尽量用代码来说话,一个例子代码只做一件事情,不管这个代码有多简单;           标题文字一定要包含主题相关文字,便于查找。          我之所以这样做,只是想若我以后积累的小例子多了,或多或少对于python的应用会起到一定的推动作用,就足矣。          我也欢迎大伙儿给我提出你想了解的主题,要目标明确单一的哈,如果我能力足以回答,我都会加入到这个小例子的系列中,就此拜谢,是您给了我灵感:)
编程百科
2020-08-27 13:36:33
相关推荐: ubuntu下安装cx_Oracle Redhat 5 下 Oracle10g 安装,相信没有比这个更全的了 共享安装 cacti 过程中的一些经历 cacti 中文-linux - sun solaris redhat7.4离线安装cx_oracle centos之Python3.7安装cx_Oracle centos 6.5 安装 cx_Oracle 5.12 步骤 ,使用oracle instantclient12.1 centos6下pip安装cx_oracle centos系统中安装cx_Oracle库
推荐群组: D语言
更多相关推荐
Python
公司有项目需要用到python与Oracle,选择cx_Oracle做数据库驱动,在安装py2.4的rpm包时,它需要glibc2.4的支持,而CentOS只有glibc2.3,于是此方法放弃.
接着使用source-rpm包编译,前提是机器上有oracle环境,否则编译失败.但是编译成功的rpm包依然无法成功安装,报找不到以来的几个包,如libclntsh.so.10.1,但这几个包却存在于lib路径下(事后想想可能是当时Oracle环境设置错误),于是放弃.
最后使用源码编译安装,接着报错 ,说找不到oci.h,原来ORACLE_HOME设错了......重新设置后,编译\安装完成,一个cx_Oracle.so文件出现在python lib的site-packages下,使用测试脚本import cx_Oracle,成功!
总结一句话,安装很简单,环境很重要.
编程百科
2020-08-27 13:36:18
相关推荐: 初识django, 一起进入python的世界吧 django心得:url可以做的更多 django的debug_toolbar 在windows下详细安装步骤 Generic Views odoo13源码-004: models_1 第九章: Generic views Python著名的lib和开发框架(均为转载) 翻译www.djangobook.com之第九章: Generic views
推荐群组: Tapestry
更多相关推荐
Python 今天要写一个程序的小模块---同一个网页里面,中间的内容区要显示所有的student,而在右侧边栏需要显示所有的class(班级;))起初已经写完了显示所有student的代码了,用的就是generic views----太爽了,仅用了很少很少的代码。 newsList = {     'queryset': Student.objects.all(), } urlpatterns = patterns('',     (r'^$', 'django.views.generic.list_detail.object_list',dict(paginate_by=20, **newsList)), ) note :        paginate_by=20指每20个记录分页        默认的模版名字为     (你的app名称)_list.html,如你的app为stu,那么默认模版就为stu_list.html 接下来需求变更,要求我在同一页面显示class列表... 呵呵,因为我比较懒,所以一来我不想修改现有代码,二来不愿意重新写views中关于查询数据库然后传递到模版等代码。我想generic views一定已经解决了同时传多个字典的情况了。呵呵,果然:你只需添加extra_context就可以了--还是非常少的代码 newsList = {     'queryset': Student.objects.all(),     'extra_context': {'classes': Class.objects.all()}, } urlpatterns = patterns('',     (r'^$', 'django.views.generic.list_detail.object_list',dict(paginate_by=20, **newsList)), ) 在模版里,你只需取classes的值就可以了,如: {% for item in classes%}             {{ item.classes_name }} {% endfor %}
编程百科
2020-08-27 13:36:09
相关推荐: 混合使用django模板和jinja模板 django1.2中使用jinja2模板 django心得:url可以做的更多 django模板标签alias 几个用于调试Django模板的标签 Python Django,session,session存储引擎设置,redis存储session Python+Django后台交互 pycharm+python+django+mysql开发的web应用
推荐群组: D语言
更多相关推荐
Python
用法
{% alias my_url %}{% url music "rock","112" %}{% endalias %}
{{ my_url }} {{ my_url }} {{ my_url }}
python 代码   from  django  import  template      register = template.Library()          @register.tag     def  alias( parser ,  token ):       nodelist =  parser .parse(('endalias',))          parser .delete_first_token()          return  Alias(nodelist, token .contents.split()[1])        class  Alias(template.Node):          def   __init__ ( self ,nodelist,alias):              self .nodelist = nodelist            self .alias = alias                   def  render( self , context):           output= self .nodelist.render(context)           context[ self .alias]=output            return  output  
配合上次我写的统计访问的东西,和以下这段代码可以这样使用
            {% alias now_url %}{% url mytube %}{% endalias %}
            {% page_analytic_visit now_url %}
python 代码 from  django  import  template   from  django.core. exceptions   import  ObjectDoesNotExist      from  utils.url_decorate.models  import  PageAnalytic      register = template.Library()      @register.simple_tag   def  page_analytic_visit(url):        try :            return  PageAnalytic.objects. get (url=url).visit        except  ObjectDoesNotExist:            return  0  


编程百科
2020-08-27 13:35:57
相关推荐: django模板标签alias Django的url的简化和默认映射 我的第一个Python Web应用 django心得:url可以做的更多 python django项目开发总结 Python编程-从入门到实践 Chapter18 第18章Django入门 映射URL 学习时的坑 Python网络编程 11.2 Django和WebSocket 用python+django写个简单的个人网站(-)初步django框架构建
推荐群组: Python
更多相关推荐
Python 辛辛苦苦,完善了一个url_decorate的django app,支持include,支持多个decorate的复合代码在http://groups.google.com/group/python-cn/browse_thread/thread/6980d49316499e96
可以方便的在url中使用decorate,这里我演示了一个内建的登录,一个自定义的页面访问量的统计
如自定义的页面访问量的统计代码很简单,如下
models.py
from django.db import models
class PageAnalytic(models.Model):
    url = models.URLField(max_length=2048,primary_key=True)
    visit = models.IntegerField(default=0)
    class Admin:
        list_display= ('url','visit')
    class Meta:
        ordering = ['url']
views.py:
from models import PageAnalytic
from url_decorate import make_decorate
@make_decorate
def page_analytic(request):
    page,is_create=PageAnalytic.objects.get_or_create(url=request.path)
    page.visit+=1
    page.save()
shortcuts.py:
from url_decorate import url_decorate,patterns_decorate
from views import page_analytic
page_analytic_url=url_decorate(page_analytic)
page_analytic_patterns=patterns_decorate(page_analytic)
使用示例:
.................
from utils.url_decorate.shortcuts import
page_analytic_patterns,page_analytic_url
urlpatterns = patterns('',
    #统计页面访问量
    page_analytic_url(r'^admin/', include('django.contrib.admin.urls')),
    (r'^media/(?P .*)', 'django.views.static.serve',
{'document_root' : settings.MEDIA_ROOT, 'show_indexes':True}),
)
#更方便的形式urlpatterns+=page_analytic_patterns('',     (r'^$',direct_to_template, {'template': 'mytube.html'}), ) Url decorator
Some time we want to account the number of visitor by url or some url
only the logined in user can visit .
Yes , we can use url decorator do this thing .
I write a reuseable app for simplify those job . It can make decorator
more easy , can work with "include(xxx.urls)",
support multi-decorator .
Ok , we give a simplest example:
from django.conf.urls.defaults import *
from django.contrib.admin.views.decorators import staff_member_required
from django.views.generic.simple import direct_to_template
from url_decorate.url_decorate import url_decorate
staff_member_url=url_decorate(staff_member_required)
urlpatterns = patterns('',
    staff_member_required(r'^$',direct_to_template, {'template': 'xxx.html'}),
)
Ok,You will find the / of this website require login in .
But , sometime we have a lot of url should be logined in ,
patterns_decorate will help you to do this more easy .
Just use as below:
staff_member_patterns=patterns_decorate(staff_member_required)
urlpatterns = staff_member_patterns('',
    (r'xxx',direct_to_template, {'template': 'xxx.html'}),
    (r'xxx',direct_to_template, {'template': 'xxx.html'}),
    (r'xxx',direct_to_template, {'template': 'xxx.html'}),
)
For lazy people as me , I write staff_member_patterns,staff_member_url
and login_url,login_patterns in shortcuts.py , just import it to use
:)
Then , let's write a decorator by ourself .This decorator can account
the number of visitor for each pages .
First , write a model
models.py:
#----------------------------------------------------------------------------
from django.db import models
class PageAnalytic(models.Model):
   url = models.URLField(max_length=2048,primary_key=True)
   visit = models.IntegerField(default=0)
   class Admin:
       list_display= ('url','visit')
   class Meta:
       ordering = ['url']
#----------------------------------------------------------------------------
Second , write the view . You just need to write a function can
process the request .
The other thing "make_decorate" can take it over .
views.py:
#----------------------------------------------------------------------------
from models import PageAnalytic
from url_decorate import make_decorate
@make_decorate
def page_analytic(request):
   page,is_create=PageAnalytic.objects.get_or_create(url=request.path)
   page.visit+=1
   page.save()
#----------------------------------------------------------------------------
At last , write two shortcuts
shortcuts.py:
#----------------------------------------------------------------------------
from url_decorate import url_decorate,patterns_decorate
from views import page_analytic
page_analytic_url=url_decorate(page_analytic)
page_analytic_patterns=patterns_decorate(page_analytic)
#----------------------------------------------------------------------------
Now , It's time to use this , we just accout the admin .
#----------------------------------------------------------------------------
from url_decorate.shortcuts import page_analytic_url
urlpatterns = patterns('',   page_analytic_url(r'^admin/', include('django.contrib.admin.urls')), )
编程百科
2020-08-27 13:35:47
相关推荐: 提问:我有一个稍微复杂的sql语句,如何能够让他在hibernate
编程百科
2020-08-27 13:35:27
相关推荐: PHP入门——MySQL数据库操作 php写的数据库管理的小类(待升级) linux下PHP5.5的安装【oci8,pdo-oci,memcache,Zend OPCache扩展】 linux下nginx连接PHP5.5 LAMP部署-CentOS、Apache、MySQL、PHP配置优化 web级mysql实战 PHP7基础入门 从此不求人:自主研发一套PHP前端开发框架 PHP7文件目录函数库实战
推荐群组: phprpc/hprose
更多相关推荐
PHP PHP 连接 MySQLPHP 5 及以上版本建议使用以下方式连接 MySQL : MySQLi extension ("i" 意为 improved) PDO (PHP Data Objects) 在 PHP 早起版本中我们使用 MySQL 扩展。但该扩展在 2012 年开始不建议使用。 我是该用 MySQLi ,还是 PDO? 如果你需要一个简短的回答,即 "你习惯哪个就用哪个"。 MySQLi 和 PDO 有它们自己的优势: PDO 应用在 12 种不同数据库中, MySQLi 只针对 MySQL 数据库。 所以,如果你的项目需要在多种数据库中切换,建议使用 PDO ,这样你只需要修改连接字符串和部门查询语句即可。 使用 MySQLi, 如果不同数据库,你需要重新编写所有代码,包括查询。 两者都是面向对象, 但 MySQLi 还提供了 API 接口。 两者都支持预处理语句。 预处理语句可以防止 SQL 注入,对于 web 项目的安全性是非常重要的。 MySQLi 和 PDO 连接 MySQL 实例 在本章节及接下来的章节中,我们会使用以下三种方式来演示 PHP 操作 MySQL: MySQLi (面向对象) MySQLi (面向过程) PDO MySQLi 安装 Linux 和 Windows: 在 php5 mysql 包安装时 MySQLi 扩展多数情况下是自动安装的。 安装详细信息,请查看: http://php.net/manual/en/mysqli.installation.php 可以通过 phpinfo() 查看是否安装成功: PDO 安装 For 安装详细信息,请查看: http://php.net/manual/en/pdo.installation.php 可以通过 phpinfo() 查看是否安装成功: 连接 MySQL 在我们访问 MySQL 数据库前,我们需要先连接到数据库服务器: 实例 (MySQLi - 面向对象) connect_error) { die("连接失败: " . $conn->connect_error); } echo "连接成功"; ?> 注意在以上面向对象的实例中 $connect_error 是在 PHP 5.2.9 和 5.3.0 中添加的。如果你需要兼容更早版本 请使用以下代码替换: // 检测连接 if (mysqli_connect_error()) { die("数据库连接失败: " . mysqli_connect_error()); } 实例 (MySQLi - 面向过程) 实例 (PDO) getMessage(); } ?> 注意在以上 PDO 实例中我们已经指定了数据库 (myDB)。PDO 在连接过程需要设置数据库名。如果没有指定,则会抛出异常。 关闭连接 连接在脚本执行完后会自动关闭。你也可以使用以下代码来关闭连接: 实例 (MySQLi - 面向对象) $conn->close(); 实例 (MySQLi - 面向过程) mysqli_close($conn); 实例 (PDO) $conn = null; 感谢观看 兄弟连教育 分享
编程百科
2020-08-27 13:35:20
相关推荐: 好吧,既然写了就发出来——40分钟左右写的“根据currentTimeMillis和数学运算算时间”………… shell编程基础知识 大话重构连载7:重构是一系列的等量变换 参照别人的数据库类写的一个数据库操作类类 MySQL:if语句、if...else语句、case语句,使用方法解析 PHP分支控制语句 if...else 和 switch HTML页面做判断if .... else ..... PHP原生的if...else的写法 优化多个else if的情形
推荐群组: D语言
更多相关推荐
PHP 条件语句用于根据不同条件执行不同动作。PHP 条件语句 当您编写代码时,您常常需要为不同的判断执行不同的动作。您可以在代码中使用条件语句来完成此任务。 在 PHP 中,提供了下列条件语句: if 语句 - 在条件成立时执行代码 if...else 语句 - 在条件成立时执行一块代码,条件不成立时执行另一块代码 if...else if....else 语句 - 在若干条件之一成立时执行一个代码块 switch 语句 - 在若干条件之一成立时执行一个代码块 PHP - if 语句 if 语句用于仅当指定条件成立时执行代码。 语法 if (条件) { 条件成立时要执行的代码; } 如果当前时间小于 20,下面的实例将输出 "Have a good day!": 实例 运行实例 » PHP - if...else 语句 在条件成立时执行一块代码,条件不成立时执行另一块代码,请使用 if....else 语句。 语法 if (条件) { 条件成立时执行的代码; } else { 条件不成立时执行的代码; } 如果当前时间小于 20,下面的实例将输出 "Have a good day!",否则输出 "Have a good night!": 实例 运行实例 » PHP - if...else if....else 语句 在若干条件之一成立时执行一个代码块,请使用 if....else if...else 语句。. 语法 if (条件) { if 条件成立时执行的代码; } else if (条件) { elseif 条件成立时执行的代码; } else { 条件不成立时执行的代码; } 如果当前时间小于 10,下面的实例将输出 "Have a good morning!",如果当前时间不小于 10 且小于 20,则输出 "Have a good day!",否则输出 "Have a good night!": 实例 运行实例 » PHP - switch 语句 switch 语句将在下一章进行讲解。 感谢观看 兄弟连教育 分享
编程百科
2020-08-27 13:35:13
相关推荐: dedecms5.7更换kindeditor在线编辑器的解决方案 一个Hibernate的开发指南 53个要点提高PHP编程效率 ruby文件操作大全 php培训技巧全部免费大放送 免费IT教程视频 前端学习的几个网站 免费资源教程整理
推荐群组: JBoss SEAM
更多相关推荐
PHP php培训技巧全部免费大放送使用PHP本身的对话   PHP4.0中最令人兴奋的特性应该是对对话的支持,PHP3.0的用户必须使用第三方的软件否则就不能使用对话,不支持对话一直是PHP培训最大的缺憾之一。   只要用户在浏览你的网站,你就可以利用对话维护与特定用户有关的变量,而无需建立多个cookie、使用隐藏表格字段或将信息存储在数据库中。   在一个网页上启动一个对话,就会使PHP引擎知道你想启动一个对话(如果还没有启动)或者继续当前的对话:   session_start();   启动一个对话将通过cookie向用户发送一个识别字符串(例如940f8b05a40d5119c030c9c7745aead9),在服务器端,会创建一个与识别字符串匹配的临时文件,例如sess_940f8b05a40d5119c030c9c7745aead9,这个文件中包含的对话变量以及它们的值。   用来显示对话的作用的最常见的例子是访问计数器。启动PHP模块,确保PHP代码是文件的第一行,在PHP代码之前不要有空格、HTML代码和其他的代码。因为对话会发送一个头部,因此如果在session_start()之前有空格和HTML代码,就会得到一个出错信息。   
编程百科
2020-08-27 13:35:03
相关推荐: 写个日志封装器....感觉用起来很爽 Zend Framework Smart PHP 项目 移植 APMServ 从java程序员的角度看PHP(二)--关于调试 在J2ME中模拟C语言中的文件操作 【推荐】有趣儿的PHP文件操作常用函数总结 PHP生成动态页面 深入理解PHP代码的执行的过程 [php] 如何正确发布 PHP 代码 mysql分库分表实战及php代码操作完整实例
推荐群组: D语言
更多相关推荐
PHP  PHP中提供了一系列的I/O函数,能简捷地实现我们所需要的功能,包括文件系统操作和目录操作(如“复制[copy]”)。下面兄弟连PHP培训小编给大家介绍的是基本的文件读写操作:(1)读文件;(2)写文件;(3)追加到文件。   以下是一篇关于文件基本读写操作的文章,我曾经就是看了这篇文章后学会文件基本操作的,在这里发出来与大家共享:   读文件:   PHP代码:   1.   22.   写文件:   PHP代码:   1.   21.   追加到文件后面:   PHP代码:   1.   21.   以上只是简单介绍,下面我们要讨论一些更深层的。   有时候会发生多人写入的情况(最常见是在流量较大的网站),会产生无用的数据写入文件, 例如:   info.file文件内容如下 ->   |1|Mukul|15|Male|India (n)   |2|Linus|31|Male|Finland (n)   现在两个人同时注册,引起文件破坏->   info.file ->   |1|Mukul|15|Male|India   |2|Linus|31|Male|Finland   |3|Rob|27|Male|USA|   Bill|29|Male|USA   上例中当PHP写入Rob的信息到文件的时候,Bill正好也开始写入,这时候正好需要写入Rob纪录的'n',引起文件破坏。   我们当然不希望发生这样的情况, 所以让我们看看文件锁定:   PHP代码:   1.   26.   上例中,如果两个文件read.php和read2.php都要存取该文件,那么它们都可以读取,但是当一个程序需要写入的时候,它必须等待,直到读操作完成,文件所释放。   PHP代码:   1.   25.   虽然"w"模式用来覆盖文件, 单我觉得不适用。   PHP代码:   1.   29.   Hmmm..., 对于追加数据与其他操作有点不同,就是FSEEK! 确认文件指针在文件尾部总是一个好习惯。   如果是在Windows系统下, 上面的文件中文件名前面需要加上''.   FLOCK杂谈:   Flock()只在文件打开后才锁定。 在上列中文件打开后才获得锁定,现在文件的内容只是在当时的内容, 而不反映出别的程序操作的结果,因此不只是在文件追加操作,就是对读取操作也应该使用fseek。   (此处翻译可能不是很确切, 但我想意思到了)。   关于模式:   'r' - 只读方式打开, 文件指针置于文件头   'r+' - 读写方式打开,文件指针置于文件头   'w' - 只写打开,文件指针置于文件头, 文件被剪切为0字节, 如果文件不存在, 尝试建立文件   'w+' - 读写打开,文件指针置于文件头, 文件大小被剪切为0字节,如果文件不存在, 尝试建立文件   'a' - 只写方式打开,文件指针置于文件尾,如果文件不存在,尝试建立文件   'a+' - 读写打开,文件指针置于文件尾,如果文件不存在, 尝试建立文件    顺便说一下创建文件目录的代码   //创建类似"../../../xxx/xxx.txt"的目录   function createdirs($path, $mode = 0777) //mode 077   {   $dirs = explode('/',$path);   $pos = strrpos($path, ".");   if ($pos === false) { // note: three equal signs   // not found, means path ends in a dir not file   $subamount=0;   }   else {   $subamount=1;   }   for ($c=0;$c < count($dirs) - $subamount; $c++) {   $thispath="";   for ($cc=0; $cc <= $c; $cc++) {   $thispath.=$dirs[$cc].'/';   }   if (!file_exists($thispath)) {   //print "$thispath   ";   mkdir($thispath,$mode); //mkdir函数创建目录   }   }   }   //调用如createdirs("xxx/xxxx/xxxx",);   //原函数中使用$GLOBALS["dirseparator"]我改成了'/'   function recur_mkdirs($path, $mode = 0777) //mode 0777   {   //$GLOBALS["dirseparator"]   $dirs = explode($GLOBALS["dirseparator"],$path);   $pos = strrpos($path, ".");   if ($pos === false) { // note: three equal signs   // not found, means path ends in a dir not file   $subamount=0;   }   else {   $subamount=1;   }   这些只是一些基本的关于文件的操作代码,相信对初学者很有用,在此贴出来,希望有抛砖引玉之功能!
编程百科
2020-08-27 13:34:53
相关推荐: PHP代码转成java代码 新浪微博,自动加关注 使用curl获取google联系人列表 (向zend的Gdata say no) 仅供参考, cURL 二次封装的类库 Curl_Manager 全国天气预报数据接口调用PHP示例 天气预报开放API(很多哦) 基于PHP的短信接口调用示例代码 【接口调用】心知天气API接口调用加密步骤示例代码说明 ajax 调用后台接口示例
推荐群组: D语言
更多相关推荐
PHP 本代码示例是基于PHP的聚合数据全国天气预报API服务请求的代码样例,使用前你需要:①:通过 https://www.juhe.cn/docs/api/id/39 申请一个天气预报API的appkey样例代码包含了获取支持城市列表、根据城市获取天气预报、根据IP地址请求天气预报、根据GPS坐标请求天气、城市3小时天气预报的实现。示例代码主要是解析一些常用字段,如需要完整或其他未包含的字段,可以自行参考官方的接口,进行修改。 首先:引入封装好的天气调用类 header('Content-type:text/html;charset=utf-8'); include 'class.juhe.weather.php'; //引入天气请求类 //接口基本信息配置 $appkey = '**********'; //您申请的天气查询appkey $weather = new weather($appkey); 一、获取支持的城市列表 由于支持的城市列表基本不会这么变化,大家可以获取到列表后内置到自己的应用中,就不用每次都去请求API。 $citysResult = $weather->getCitys(); if($citysResult['error_code'] == 0){ //以下可根据实际业务需求,自行改写 ////////////////////////////////////////////////////////////////////// $citys = $citysResult['result']; foreach($citys as $ckey =>$c){ echo "ID:".$c['id'].",省份:".$c['province'].",城市:".$c['city'].",区域:".$c['district']."
"; } }else{ //以下可根据实际业务需求,自行改写 ////////////////////////////////////////////////////////////////////// echo $citysResult['error_code'].":".$citysResult['reason']; } 二、根据城市/ID获取天气预报 通过城市的名称或城市的ID来获取天气预报,城市id就是获取城市支持列表中返回的字段ID $cityWeatherResult = $weather->getWeather('苏州'); if($cityWeatherResult['error_code'] == 0){ //以下可根据实际业务需求,自行改写 ////////////////////////////////////////////////////////////////////// $data = $cityWeatherResult['result']; echo "=======当前天气实况=======
"; echo "温度:".$data['sk']['temp']." "; echo "风向:".$data['sk']['wind_direction']." (".$data['sk']['wind_strength'].")"; echo "湿度:".$data['sk']['humidity']." "; echo "

"; echo "=======未来几天天气预报=======
"; foreach($data['future'] as $wkey =>$f){ echo "日期:".$f['date']." ".$f['week']." ".$f['weather']." ".$f['temperature']."
"; } echo "

"; echo "=======相关天气指数=======
"; echo "穿衣指数:".$data['today']['dressing_index']." , ".$data['today']['dressing_advice']."
"; echo "紫外线强度:".$data['today']['uv_index']."
"; echo "舒适指数:".$data['today']['comfort_index']."
"; echo "洗车指数:".$data['today']['wash_index']; echo "

"; }else{ echo $cityWeatherResult['error_code'].":".$cityWeatherResult['reason']; } 三、根据用户的IP地址请求对应的天气预报 通过用户的IP地址获取用户所在地的天气预报,由于IP地址解析可能会有误差,所以有时定位到的城市不一定是用户实际的所在地。 $ipWeatherResult = $weather->getWeatherByIP('58.215.154.128'); if($ipWeatherResult['error_code'] == 0){ //以下可根据实际业务需求,自行改写 ////////////////////////////////////////////////////////////////////// $data = $ipWeatherResult['result']; echo "=======当前城市=======
"; echo $data['today']['city']; echo "

"; echo "=======当前天气实况=======
"; echo "温度:".$data['sk']['temp']." "; echo "风向:".$data['sk']['wind_direction']." (".$data['sk']['wind_strength'].")"; echo "湿度:".$data['sk']['humidity']." "; echo "

"; echo "=======未来几天天气预报=======
"; foreach($data['future'] as $wkey =>$f){ echo "日期:".$f['date']." ".$f['week']." ".$f['weather']." ".$f['temperature']."
"; } echo "

"; echo "=======相关天气指数=======
"; echo "穿衣指数:".$data['today']['dressing_index']." , ".$data['today']['dressing_advice']."
"; echo "紫外线强度:".$data['today']['uv_index']."
"; echo "舒适指数:".$data['today']['comfort_index']."
"; echo "洗车指数:".$data['today']['wash_index']; echo "

"; }else{ echo $ipWeatherResult['error_code'].":".$ipWeatherResult['reason']; } 四、根据GPS坐标来获取对应地区的天气 无论通过二、三、四获取的天气预报,因为聚合格式都是统一的,所以解析的流程是一致的,所以没有额外的操作,只是传参上有点的差异。 $geoWeatherResult = $weather->getWeatherByGeo(116.401394,39.916042); if($geoWeatherResult['error_code'] == 0){ //以下可根据实际业务需求,自行改写 ////////////////////////////////////////////////////////////////////// $data = $geoWeatherResult['result']; echo "=======当前城市=======
"; echo $data['today']['city']; echo "

"; echo "=======当前天气实况=======
"; echo "温度:".$data['sk']['temp']." "; echo "风向:".$data['sk']['wind_direction']." (".$data['sk']['wind_strength'].")"; echo "湿度:".$data['sk']['humidity']." "; echo "

"; echo "=======未来几天天气预报=======
"; foreach($data['future'] as $wkey =>$f){ echo "日期:".$f['date']." ".$f['week']." ".$f['weather']." ".$f['temperature']."
"; } echo "

"; echo "=======相关天气指数=======
"; echo "穿衣指数:".$data['today']['dressing_index']." , ".$data['today']['dressing_advice']."
"; echo "紫外线强度:".$data['today']['uv_index']."
"; echo "舒适指数:".$data['today']['comfort_index']."
"; echo "洗车指数:".$data['today']['wash_index']; echo "

"; }else{ echo $geoWeatherResult['error_code'].":".$geoWeatherResult['reason']; } 五、获取城市三小时预报 就是城市每3小时的天气情况 $forecastResult = $weather->getForecast("苏州"); if($forecastResult['error_code'] == 0){ //以下可根据实际业务需求,自行改写 ////////////////////////////////////////////////////////////////////// $data = $forecastResult['result']; foreach($data as $key => $d){ echo "日期:".$d['date']." (".$d['sh']."点-".$d['eh']."点) ".$d['weather']." ".$d['temp1']."~".$d["temp2"]."
"; } }else{ //以下可根据实际业务需求,自行改写 ////////////////////////////////////////////////////////////////////// echo $forecastResult['error_code'].":".$forecastResult['reason']; } 通过上面的示例代码,大家应该对如果调用聚合数据天气预报API有了一个大体的了解。 最后放上class.juhe.weather.php完整代码: // +---------------------------------------------------------------------- //---------------------------------- // 聚合数据天气预报接口请求类 //---------------------------------- class weather{ private $appkey = false; //申请的聚合天气预报APPKEY private $cityUrl = 'http://v.juhe.cn/weather/citys'; //城市列表API URL private $weatherUrl = 'http://v.juhe.cn/weather/index'; //根据城市请求天气API URL private $weatherIPUrl = 'http://v.juhe.cn/weather/ip'; //根据IP地址请求天气API URL private $weatherGeoUrl = 'http://v.juhe.cn/weather/geo'; //根据GPS坐标获取天气API URL private $forecast3hUrl = 'http://v.juhe.cn/weather/forecast3h'; //获取城市天气3小时预报API URL public function __construct($appkey){ $this->appkey = $appkey; } /** * 获取天气预报支持城市列表 * @return array */ public function getCitys(){ $params = 'key='.$this->appkey; $content = $this->juhecurl($this->cityUrl,$params); return $this->_returnArray($content); } /** * 根据城市名称/ID获取详细天气预报 * @param string $city [城市名称/ID] * @return array */ public function getWeather($city){ $paramsArray = array( 'key' => $this->appkey, 'cityname' => $city, 'format' => 2 ); $params = http_build_query($paramsArray); $content = $this->juhecurl($this->weatherUrl,$params); return $this->_returnArray($content); } /** * 根据IP地址获取当地天气预报 * @param string $ip [IP地址] * @return array */ public function getWeatherByIP($ip){ $paramsArray = array( 'key' => $this->appkey, 'ip' => $ip, 'format' => 2 ); $params = http_build_query($paramsArray); $content = $this->juhecurl($this->weatherIPUrl,$params); return $this->_returnArray($content); } /** * 根据GPS坐标获取当地的天气预报 * @param string $lon [经度] * @param string $lat [纬度] * @return array */ public function getWeatherByGeo($lon,$lat){ $paramsArray = array( 'key' => $this->appkey, 'lon' => $lon, 'lat' => $lat, 'format' => 2 ); $params = http_build_query($paramsArray); $content = $this->juhecurl($this->weatherGeoUrl,$params); return $this->_returnArray($content); } /** * 获取城市三小时预报 * @param string $city [城市名称] * @return array */ public function getForecast($city){ $paramsArray = array( 'key' => $this->appkey, 'cityname' => $city, 'format' => 2 ); $params = http_build_query($paramsArray); $content = $this->juhecurl($this->forecast3hUrl,$params); return $this->_returnArray($content); } /** * 将JSON内容转为数据,并返回 * @param string $content [内容] * @return array */ public function _returnArray($content){ return json_decode($content,true); } /** * 请求接口返回内容 * @param string $url [请求的URL地址] * @param string $params [请求的参数] * @param int $ipost [是否采用POST形式] * @return string */ public function juhecurl($url,$params=false,$ispost=0){ $httpInfo = array(); $ch = curl_init(); curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 ); curl_setopt( $ch, CURLOPT_USERAGENT , 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36' ); curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT , 30 ); curl_setopt( $ch, CURLOPT_TIMEOUT , 30); curl_setopt( $ch, CURLOPT_RETURNTRANSFER , true ); if( $ispost ) { curl_setopt( $ch , CURLOPT_POST , true ); curl_setopt( $ch , CURLOPT_POSTFIELDS , $params ); curl_setopt( $ch , CURLOPT_URL , $url ); } else { if($params){ curl_setopt( $ch , CURLOPT_URL , $url.'?'.$params ); }else{ curl_setopt( $ch , CURLOPT_URL , $url); } } $response = curl_exec( $ch ); if ($response === FALSE) { //echo "cURL Error: " . curl_error($ch); return false; } $httpCode = curl_getinfo( $ch , CURLINFO_HTTP_CODE ); $httpInfo = array_merge( $httpInfo , curl_getinfo( $ch ) ); curl_close( $ch ); return $response; } }
编程百科
2020-08-27 13:34:42
相关推荐: 经典的sql语句 一道淘宝的考察sql语句的面试题 DB2 SQL命令小集 mysql从入门到精通(连载) LAMP部署-CentOS、Apache、MySQL、PHP配置优化 MySQL数据库优化实践 web级mysql实战 MySQL数据库操作类(PHP实现,支持连贯操作) php操作mysql数据库(增删改查)
推荐群组: Database圈子
更多相关推荐
PHP MySql数据库操作 –登录MySql:——–   Windows环境进入cmd后,输入mysql –h localhost –u root –p,再输入密码就可以启动mysql;其中localhost是mysql服务器所在的ip,如果是本机可以用localhost。   –数据库相关操作——–   create database db_name(数据库名称):建名为db_name的数据库   show databases:查看已经存在的数据库   drop database db_name:删除名为db_name的数据库   use db_name:操作名为db_name的数据库   show tables:显示数据库中的表   desc table¬_name:查看表名为table_name的表的结构   – 数据库中表(TABLE)的操作——–   Create table table_name(ID int primary key,NAME varchar(50),AGE int ,SEX varchar(10)):创建表且设置了ID为主键   create table table_name(stu_id int, course_id int,name varchar(20),grade float,primary key(stu_id,course_id)):设置了表中stu_id和course_id两个都为主键   外键:如果表A的某一个属性值依赖于表B的主键,则称B为父表,A为子表,A中的这个字段为A的外键,如果父表中的信息改变,则对应子表的数据也会改变   语法:create table table_name01(id int primary key,stu_id int,course_id int ,score float,grade int,constraint c_fk(外键别名) foreign key(stu_id,course_id) references table_name02(stu_id,course_id));table_name02是父表,table_name01是子表,给子表设置了两个外键   表字段的非空约束:create table table_name(id int primary key not null,name varchar(50) not null,stu_id int);设置not null表示字段不能为空,也就是非空   唯一约束,指字段中值不能重复:create table table_name(id int primary key auto_increment,stu_id int unique,name varchar(20) not null);其中设置了id自动增加,且unique设置了stu_id的值必须唯一性,不能有相同的值存在   E,为表设置默认值,即在没有插入数据的时候会用默认值代替;   Create table table_name(id int primary key auto_increment,stu_id int unique,name varchar(50) not null English varchar(20) default ‘zero’);即为Englist字段设置了默认值为zero;   show create table table_name;查看表的详细结构语句   –表的修改操作——–   修改表名:alter table 旧表名 rename [to] 新表名;把表名更改   修改字段属性:Alter table table_name modify 属性名 数据类型(修改后的类型)   修改字段:alter table table_name change 旧字段名 新字段名 新数据类型   增加字段:alter table table_name add 字段1 数据类型 after 字段2;在字段2后面增加字段1;如果把字段2改成FIRST即加在最前面   删除字段:alter table table_name drop 字段名   修改字段的位置:alter table table_name modify 字段名 First(第一个位置,after 字段,指定字段的后面)   更改表的引擎名:alter table table_name engine=Mylsam;   删除表的外键约束:alter table table_name drop foreign key 外键别名   删除表:   9.1:普通的没有关联的表:drop table table_name;   9.2:删除有关联的表:先用show create table table_name;查看表的详情,看到外键的另名,先删除外键,再删除表格就可以了。   –数据库的增删改查操作——–   数据库的增(insert into)删(delete)改(update)查(select)操作:   1.添加数据insert into   A增加数据分两种:1,不指定具体字段名如:insert into table_name values(值1,值2…)   指定字段名:insert into table_name(字段1,字段2….)values(值1,值2….);如果是为指定的字段加数据,只需要写出需要加数据的字段即可   同事插入多条数据:insert into table_name [字段列表]values(取舍列表1),(取值列表2)…   将一个表的数据插入到别个一张表中:   Insert into table_name1(字段列表)select (表2字段)from table_name2 where 条件表达式;   2.更新数据(改)操作update   总体操作是:update table_name set 字段1=值1,字段2=值2…where条件表达式   可以对一定范围中的数据更改,主要是从where后面的条件来判断   3.删除数据操作delete   delete from table_name where 条件表达式   Delete from table_name;将会删除所有数据;   4.查询数据query   Select 字段名列表 from table_name [where 条件表达式1] [group by 字段名[having条件表达式2]][order by 字段名[ASC(升序)/DESC(降序)]]   单表查询:select 字段名 from table_name where 条件   带in关键字查询:   判断某个字段的值是否在指定的集合中,是的话就查出来:select 字段名或* table_name where 字段名 in(值1,值2…..)   带between and 关键字的查询:select *或字段名 from table_name where 字段名 between 值1 and 值2;查找的是范围在值1与值2之间对应的数据;结果是包含两端的值的   带like的匹配查询一个完整字符串,可以加%或;%表示任意长度的字符串如b%k表示以b开头,以k对事的任意字符串,而只表示单个字符,如b_k表示以b开始k结束的3个字符的字符串   方法:select *或字段名 from table_name where 字段名 [not]like 条件;not表示不匹配时   -空值查询: select *或字段名 from table_name where 字段名 is [not]null;即查询[不]为空的数据   and与or的多条件查询:select *或字段名 from table_name where 条件1 and 条件2;与 from table_name where 条件1 and 条件2;and表示所以条件都必须成立,而or表示只需要其中任何一个条件成立就可以   F,查询结果不重复:select distinct 字段名 from table_name;   5.分组查询   单独用group by 分组,结果只会显示一个分组的一条记录:   Select *或字段名 from table_name group by 字段名   group by 和group_concat()函数使用:每个分组的所有字段都可以显示   Select 字段名,roup_coucat(字段名)from table_name group by字段名   -group by与集合函数使用:select 字段名,count(字段名)from table_name group by 字段名 having count(字段名) 条件   多字段分组:select * from table_name group by 字段1,字段2…   E,group by与with rollup一起用   Select 字段名,count(字段名)from table_name group by 字段名 with rollup   6.用limit限制查询数据   Select * from table_name limit a或(limit a,b),前者是显示从第一条到a条数据,后者是显示从a条到b条间的数据   7.使用集合函数查询数据   count()统计数据条数:Select count(*) from table_name   sum()求和:Select 字段名,sum(字段名) from table_name where 条件   avg()求平均数:Select avg(字段名) from table_name group by 字段名   max与min最大与最小值:Select max(字段名)/min(字段名) from table_name;   8.多表连接查询   - 内连接查询:两个以上表中存在意义相同的字段时,可以用该字段来连接表进行查询.如:select 字段1,字段2,字段3…from table_name1,table_name2 where table_name1.字段a=table_name2.字段b   - 外连接查询:select 字段列表from table_name01 left/right join table_name02 on table_name01.字段名=talbe_name02.字段名。Letf表示左链接,right表示右链接   - 复合条件查询:运用多条件精确查询   9.用正则表达式查询   查询以特定字符开头的记录:select * from table_name where 字段名 regexp ‘^a’以a头   查询以特定字符结束的记录:Select * from table_name where regexp ‘xx$;   用符号“.”来代替字符串中任意一个字符:Select * from table_name where name regexp ‘^l..y$’;   –表或字段取别名——–   表的别名:select * from table_name t where t.字段=值;t就是表的别名   字段的别名:用as关键字,如:select t_id as 字段id from table_name where t_id=值 ;t_id就是对应字段的别名,别名可以同真实名一样使用   –数据库备份——–   mysqldump命令备份:mysqldump –u username –p db_name table1,table2….>BackupName.sql;//其中db_name是数据库的名称,table1..是表名,如果没有表名将备份 整个数据库,backupname.sql表示备份文件的名称,前面可以加个绝对路径   备份多个数据库:Mysqldump -u username –p –databases db_name1 db_name2… > backupname.sql   备份所有数据库:Mysqldump –u root –p –all-databases > C:\all.sql   用Mysqlhotcopy工具快速备份 数据库还原:Mysql –u root –p < backup.sql//其中backup.sql是保存的数据库文件 以上分享来自兄弟连MySQL数据库培训,转载请注明出处。
编程百科
2020-08-27 13:34:34
相关推荐: 奇怪的现象,javaeye没有防范盗链吗?还是别的原因. 有利于SEO的PHP友好URL的问题 四步学习Meta标签 从JavaEye2.0看SEO C++socket网络编程--http服务器(支持php)实战教学视频 PHP7从入门到精通教程 php入门教程ppt。培训专用教程 docker运行套路实战:PHP篇
推荐群组: 大网络
更多相关推荐
PHP     当动态网页遇上搜索引擎 虽然动态网页相比于静态页面拥有许多优势,但它在搜索引擎的检索上却碰了个大钉子。无论任何一家网站,尤其是那些以营销为目的的企业网站,没有谁会希望自己的网页无法被搜索引擎检索到。但事实上却是:动态网站设计的很多内容页面都无法得到搜索引擎的检索,获取更多php视频教程请关注http://www.lampbrother.net兄弟连教育。   一般来说,搜索引擎会把动态网页地址中出现的“?”字符视做“停止标记”,在它之后的所有参数都会被忽略掉。例如对“index.php?category=x”的所有子页,搜索引擎最后检索到的url只有一个,那就是index.php这一个页面。这样一来,动态网页就陷入了无法被搜索引擎发现和检索的尴尬境地,直接失去了被用户发现的机会和搜索引擎这样一个广阔的市场空间。   搜索引擎不支持动态网页的原因   动态网页是由数据库所驱动,这就使得搜索引擎将面对无数url而被数据库套住陷入死循环的危险,这也就是我们所说的蜘蛛陷阱(spider traps)。而且一旦spider被网站套住,那么它对数据库的重复访问请求也会造成网站服务器系统的彻底瘫痪。鉴于此,搜索引擎对于动态网页中url里包含“?”之后的字符一概不予读取。   php转化为html静态页面   虽然不能保证把每个动态页面都转化为静态的html文件,但如果网站是驻留在apache服务器上,则只需一个简单的小脚本就可以把大多数动态页面都转换成html文件。   1.确定需要转换成后缀为html的php文件   我们的目标是那些名下包含动态子页较多的网页。以“index.php?category=x”为例,我们需要对“index.php”之后的动态子页进行转换。 例如,如果网站里有一个名为“arts and crafts”的子目录,url为“index.php?category=1”,其它子目录和这个url只在最后的变量上不同,因此我们需要修改当index.php之后跟随变量时服务器对它的打开方式。   2.通知服务器在接受一个html页面的调用请求后打开一个php文件   我们需要在服务器上index.php所在的目录下放置一个.htaccess文本文件。.htaccess文件是apache服务器上的一个目录配置设置文件,它提供了针对目录改变配置的方法,即在一特定的文档目录中放置一个包含一个或多个指令的文件(.htaccess文件),来作用于此目录及其所有子目录。.htaccess的功能包括设置网页密码、设置发生错误时出现的文件、改变主页文件名、禁止读取文件名、重新导向文件、增加mime类别、禁止列目录下的文件等。   在需要针对目录改变服务器的配置,而对服务器系统没有root权限时,应该使用.htaccess文件。如果服务器管理员不愿意频繁修改配置,则可以允许用户通过.htaccess文件自己修改配置,尤其是isp在一台机器上提供多个用户站点,而又希望用户可以自己改变配置的情况下,一般会开放部分.htaccess的功能给使用者自行设置。对于vdeck用户来说,可能需要先创建一个文本文件,然后在管理面板将其更名为.htaccess。现在我们需要在服务器端指定一些变量。比方说,我需要把“?category=x”这个变量改成“directory-x.html”,这样就能消除动态页面无法被搜索引擎检索的问题。   在开始创建服务器变量前,我们需要先在这个新建的.htaccess文件中创建一个rewrite engine (url重写工具)。只需要在文件第一行写上   rewriteengine on   这就等于告诉服务器我们要改变一些文件的处理方式。接下来的一行就要指定重写规则:   rewriterule ^directory-([0-9]*.* index.php?category=$1 [l,nc]   这个指令表明:只要接到url中包含“directory-0”到“directory-9”的任意静态网页的页面调用请求,服务器将以“index.php?变量”地址返回给调用用户。   先别急着编辑下一条改写规则,我们有必要在更改实际的php页面之前先进行一下测试。我们可以对上面的"重写规则"进行测试。首先新开一个浏览器窗口,在地址栏中输入“directory-1.htm”或“directory-1.html”,如果我们看到的页面显示为“index.php?category=1”就表明改写规则工作正常。   3.让搜索引擎看到我们的静态化页面   现在,我们需要让搜索引擎能够看到我们经过“改头换面”的新的网页地址。那么,是不是需要赶紧把网站再向搜索引擎提交一遍呢? 不用这么费劲,我们只需打开php文件编辑一下就行了。不过在此之前,应记得将要修改的每个脚本都做个备份,将其存放在硬盘上。然后需要确定创建更改链接地址的程序的不同地方。最好在前端而不要在后台进行更改。php文件将会从.htaccess文件中得到形如“index.php?category=x”之类的信息。我们需要把这些动态生成的网页地址更改一下,并以静态化页面地址显示给用户和搜索引擎。即将所有url中包含“index.php?category=”的部分替换为“directory-”,并加上.html后缀。   一旦发现待修改的区域,在更改后要随时检查有无错误。如果在脚本中有错误而没有发现,纠正起来是相当棘手的,尤其在对php编码不熟悉的情况下。
编程百科
2020-08-27 13:34:25
相关推荐: 53个要点提高PHP编程效率 53个要点提高PHP编程效率. 良好的书写规范提高PHP代码执行效率【上】 良好的书写规范提高PHP代码执行效率【下】 PHP高手干货分享:不能不看的50个细节!【PHP培训教程】 PHP 程序员危机:如何快速成长为不可或缺的技术人才? [转]给编程新人的建议 Android的,iOS的,PHP的,大数据的,Java的,web前端的,C++,Python等干货分享
推荐群组: GT-Grid
更多相关推荐
PHP   兄弟连分享PHP高手干货:不能不看的50个细节 1、用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量, 单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的”函数”(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加上了双引号)。   2、如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍。   3、$row[‘id’] 的速度是$row[id]的7倍。   4、echo 比 print 快,并且使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接,比如echo $str1,$str2。   5、在执行for循环之前确定最大循环数,不要每循环一次都计算最大值,最好运用foreach代替。   6、注销那些不用的变量尤其是大数组,以便释放内存。   7、尽量避免使用__get,__set,__autoload。   8、require_once()代价昂贵。   9、include文件时尽量使用绝对路径,因为它避免了PHP去include_path里查找文件的速度,解析操作系统路径所需的时间会更少。   10、如果你想知道脚本开始执行(译注:即服务器端收到客户端请求)的时刻,使用$_SERVER[‘REQUEST_TIME’]要好于time()   11、函数代替正则表达式完成相同功能。   12、str_replace函数比preg_replace函数快,但strtr函数的效率是str_replace函数的四倍。   13、如果一个字符串替换函数,可接受数组或字符作为参数,并且参数长度不太长,那么可以考虑额外写一段替换代码,使得每次传递参数是一个字符,而不是只写一行代码接受数组作为查询和替换的参数。   14、使用选择分支语句(译注:即switch case)好于使用多个if,else if语句。   15、用@屏蔽错误消息的做法非常低效,极其低效。   16、打开apache的mod_deflate模块,可以提高网页的浏览速度。   17、数据库连接当使用完毕时应关掉,不要用长连接。   18、错误消息代价昂贵。   19、在方法中递增局部变量,速度是最快的。几乎与在函数中调用局部变量的速度相当。   20、递增一个全局变量要比递增一个局部变量慢2倍。   21、递增一个对象属性(如:$this->prop++)要比递增一个局部变量慢3倍。   22、递增一个未预定义的局部变量要比递增一个预定义的局部变量慢9至10倍。   23、仅定义一个局部变量而没在函数中调用它,同样会减慢速度(其程度相当于递增一个局部变量)。PHP大概会检查看是否存在全局变量。   24、方法调用看来与类中定义的方法的数量无关,因为我(在测试方法之前和之后都)添加了10个方法,但性能上没有变化。   25、派生类中的方法运行起来要快于在基类中定义的同样的方法。   26、调用带有一个参数的空函数,其花费的时间相当于执行7至8次的局部变量递增操作。类似的方法调用所花费的时间接近于15次的局部变量递增操作。   27、Apache解析一个PHP脚本的时间要比解析一个静态HTML页面慢2至10倍。尽量多用静态HTML页面,少用脚本。   28、除非脚本可以缓存,否则每次调用时都会重新编译一次。引入一套PHP缓存机制通常可以提升25%至100%的性能,以免除编译开销。   29、尽量做缓存,可使用memcached。memcached是一款高性能的内存对象缓存系统,可用来加速动态Web应用程序,减轻数据库负载。对运算码 (OP code)的缓存很有用,使得脚本不必为每个请求做重新编译。   30、当操作字符串并需要检验其长度是否满足某种要求时,你想当然地会使用strlen()函数。此函数执行起来相当快,因为它不做任何计算, 只返回在zval 结构(C的内置数据结构,用于存储PHP变量)中存储的已知字符串长度。但是,由于strlen()是函数,多多少少会有些慢,因为函数调用会经过诸多步 骤,如字母小写化(译注:指函数名小写化,PHP不区分函数名大小写)、哈希查找,会跟随被调用的函数一起执行。在某些情况下,你可以使用isset() 技巧加速执行你的代码。   (举例如下)   if (strlen($foo) < 5) { echo “Foo is too short”$$ }   (与下面的技巧做比较)   if (!isset($foo{5})) { echo “Foo is too short”$$ }   调用isset()恰巧比strlen()快,因为与后者不同的是,isset()作为一种语言结构,意味着它的执行不需要函数查找和字母小写化。也就是说,实际上在检验字符串长度的顶层代码中你没有花太多开销。   31、当执行变量$i的递增或递减时,$i++会比++$i慢一些。这种差异是PHP特有的,并不适用于其他语言,所以请不要修改你的C或 Java代码并指望它们能立即变快,没用的。++$i更快是因为它只需要3条指令(opcodes),$i++则需要4条指令。后置递增实际上会产生一个 临时变量,这个临时变量随后被递增。而前置递增直接在原值上递增。这是最优化处理的一种,正如Zend的PHP优化器所作的那样。牢记这个优化处理不失为 一个好主意,因为并不是所有的指令优化器都会做同样的优化处理,并且存在大量没有装配指令优化器的互联网服务提供商(ISPs)和服务器。   32、并不是事必面向对象(OOP),面向对象往往开销很大,每个方法和对象调用都会消耗很多内存。   33、并非要用类实现所有的数据结构,数组也很有用。   34、不要把方法细分得过多,仔细想想你真正打算重用的是哪些代码?   35、当你需要时,你总能把代码分解成方法。   36、尽量采用大量的PHP内置函数。   37、如果在代码中存在大量耗时的函数,你可以考虑用C扩展的方式实现它们。   38、评估检验(profile)你的代码。检验器会告诉你,代码的哪些部分消耗了多少时间。Xdebug调试器包含了检验程序,评估检验总体上可以显示出代码的瓶颈。   39、mod_zip可作为Apache模块,用来即时压缩你的数据,并可让数据传输量降低80%。   40、在可以用file_get_contents替代file、fopen、feof、fgets等系列方法的情况下,尽量用 file_get_contents,因为他的效率高得多!但是要注意file_get_contents在打开一个URL文件时候的PHP版本问题;   41、尽量的少进行文件操作,虽然PHP的文件操作效率也不低的;   42、优化Select SQL语句,在可能的情况下尽量少的进行Insert、Update操作(在update上,我被恶批过);   43、尽可能的使用PHP内部函数(但是我却为了找个PHP里面不存在的函数,浪费了本可以写出一个自定义函数的时间,经验问题啊!);   44、循环内部不要声明变量,尤其是大变量:对象(这好像不只是PHP里面要注意的问题吧?);   45、多维数组尽量不要循环嵌套赋值;   46、在可以用PHP内部字符串操作函数的情况下,不要用正则表达式;   47、foreach效率更高,尽量用foreach代替while和for循环;   48、用单引号替代双引号引用字符串;   49、”用i+=1代替i=i+1。符合c/c++的习惯,效率还高”;   50、对global变量,应该用完就unset()掉 感谢兄弟连http://www.lampbrother.net/的分享!
编程百科
2020-08-27 13:34:17
相关推荐: 新浪微博,自动加关注 图片云存储的技术实现 php中curl扩展的安装及post简单使用 PHP代码转成java代码 通过PHP调用聚合数据的证件识别接口 用PHP调用证件识别接口识别本地图片 用PHP调用聚合数据证件识别接口,识别本地图片 用PHP调用证件识别API去识别本地图片
推荐群组: D语言
更多相关推荐
PHP
本文章讲的是如何通过PHP调用聚合数据的证件识别接口
 
前置条件
1
在开始前,请作如下准备
学会用PHP输出“Hello World” 去聚合数据申请证件识别专用的KEY: https://www.juhe.cn/docs/api/id/153
 
 
操作步骤 配置好PHP开发环境 在相应的本地网站根目录下新建一个文件夹并命名为: card 请准备一张 jpg 格式的身份证照片(本示例中的图片来自网络),并命名为 1.jpg ,放在 card 目录 请务必确保PHP对1.jpg有读权限(先用fopen('1.jpg', 'r')测试一下) 在card目录新建一个 index.php 文件,并输入以下内容: = 5.5.0) * 示例中的身份证图片来自网络,用真实的身份证图片会有更佳的识别效果 */ header("Content-type:text/html;charset=utf-8"); $config = array( 'key' => '将我替换成您申请的KEY', //聚合数据证件识别接口的URL地址 'url' => 'http://v.juhe.cn/certificates/query.php', //证件的类型,这里是身份证正面 'type' => 'image/jpg', //证件图片的类型 'cardType' => '2', ); /*第一种方式*/ $ch = curl_init($config['url']); //$filename

Path to the file which will be uploaded.

//$postname [optional]

Name of the file.

$cfile = curl_file_create('filename.jpg', $config['type'], 'postname.jpg'); $data = array( 'cardType' => $config['cardType'], 'key' => $config['key'], 'pic' => $cfile, ); curl_setopt($ch, CURLOPT_POST,1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //已经获取到内容,还没输出,如果不加下面这行,则不需要echo response //curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_exec($ch); curl_close($ch); /*/第一种方式*/ /*第二种方式*/ $data = array( 'cardType' => $config['cardType'], 'key' => $config['key'], 'pic' => "@1.jpg", ); post($config['url'], $data); /*/第二种方式*/ function post($url, $data) { $ch = curl_init(); curl_setopt( $ch , CURLOPT_POST , true ); @curl_setopt( $ch , CURLOPT_POSTFIELDS , $data); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $response = curl_exec($ch); curl_close($ch); echo $response; }
 6.打开浏览器,访问 http://localhost/card/index.php ,正常情况下你应该看到类似下面的内容: {"error_code":"200","reason":"操作成功","result":{"住址":"XX省XX县XX村XX号","保留":"","公民身份号码":"420188195408288888","出生":"1954-08-28","头像":"","姓名":"XXX","性别":"女","民族":"汉族"}} {"error_code":"200","reason":"操作成功","result":{"住址":"XX省XX县XX村XX号","保留":"","公民身份号码":"420188195408288888","出生":"1954-08-28","头像":"","姓名":"XXX","性别":"女","民族":"汉族"}}
 7.如果PHP版本低于5.5,但是又想用curl_file_create,请参考官方文档提供的方法: http://php.net/manual/en/function.curl-file-create.php For PHP < 5.5:
 
 
编程百科
2020-08-27 13:34:10
相关推荐: linux下nginx连接PHP5.5 Ubuntu Linux 10.04 安装及配置Nginx+PHP FPM centos6.x + nginx1.6 + php5.3配置不正确 共享安装 cacti 过程中的一些经历 cacti 中文-linux - sun solaris 如何启用 Apache 的 PHP-FPM 多实例 Apache的PHP-FPM-启用实例 21天通关Python(仅视频课)
推荐群组: 高级语言虚拟机
更多相关推荐
PHP PHP-FPM 作为 FastCGI 进程管理器而广为熟知,它是 PHP FastCGI 实现的改进,带有更为有用的功能,用于处理高负载的服务器和网站。下面列出其中一些功能: ·拥有具有优雅(graceful)启动/停止选项的高级进程管理能力。 ·可以通过不同的用户身份/组身份来以监听多个端口以及使用多个PHP配置。 ·错误日志记录。 ·支持上传加速。 ·特别用于在处理一些耗时任务时结束请求和清空所有数据的功能。 ·同时支持动态和静态的子进程重生。 ·支持IP地址限制。 接下来我们要讨论的是,在运行 CPanel 11.52 及 EA3 的 CentOS 7 服务器上,于 Nginx 和 Apache 之上安装 PHP-FPM,以及如何来通过 CPanel 管理这些安装好的多个 PHP-FPM 实例。 在我们开始安装前, 先看看安装的先决条件。 启用 Modproxyfcgi 模块 启用 MPM_Event 由于我们要将 PHP-FPM 安装到一台 EA3 服务器,我们需要运行 EasyApache 来编译 Apache 以启用这些模块。 这里,兄弟连php培训将为你简述以下的安装步骤。 步骤 1:安装 Epel 仓库 步骤 2:安装 nDeploy RPM 仓库,这是此次安装中最为重要的步骤。 步骤 3:使用 yum 从 nDeploy 仓库安装 nDeploy 和 Nginx 插件。 步骤 4:启用/配置 Nginx 为反向代理。 完成这些步骤后,下面为服务器中所有可用 PHP 版本安装 PHP-FPM 包,EA3 使用 remi 仓库来安装这些包。你可以运行这个 nDeploy 脚本来下载所有的包。 root@server1 [~]# /opt/nDeploy/scripts/easy_php_setup.sh Loaded plugins: fastestmirror, tsflags, universal-hooks EA4 | 2.9 kB 00:00:00 base | 3.6 kB 00:00:00 epel/x86_64/metalink | 9.7 kB 00:00:00 epel | 4.3 kB 00:00:00 extras | 3.4 kB 00:00:00 updates | 3.4 kB 00:00:00 (1/2): epel/x86_64/updateinfo | 460 kB 00:00:00 (2/2): epel/x86_64/primary_db 运行该脚本将为 PHP 54,PHP 55,PHP 56 和 PHP 70 安装所有这些 FPM 包。 Installed Packages php54-php-fpm.x86_64 5.4.45-3.el7.remi @remi php55-php-fpm.x86_64 5.5.31-1.el7.remi @remi php56-php-fpm.x86_64 5.6.17-1.el7.remi @remi php70-php-fpm.x86_64 7.0.2-1.el7.remi @remi 在以上安装完成后,你需要为 Apache 启用 PHP-FPM SAPI。你可以运行下面这个脚本来启用 PHP-FPM 实例。 root@server1 [~]# /opt/nDeploy/scripts/apache_php-fpm_setup.sh enable mod_proxy_fcgi.c Please choose one default PHP version from the list below PHP70 PHP56 PHP54 PHP55 Provide the exact desired version string here and press ENTER: PHP54 ConfGen:: lxblogger ConfGen:: blogr ConfGen:: saheetha ConfGen:: satest which: no cagefsctl in (/usr/local/jdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin) info [rebuildhttpdconf] Missing owner for domain server1.centos7-test.com, force lookup to root Built /usr/local/apache/conf/httpd.conf OK Waiting for “httpd” to restart gracefully …waiting for “httpd” to initialize …… …finished. 它会问你需要运行哪个 PHP 版本作为服务器默认版本,你可以输入那些细节内容,然后继续配置并为现存的域名生成虚拟主机文件。 我服务器上的默认 PHP-FPM 是PHP 54,而我正要将我的域名的 PHP-FPM 实例单独修改成 PHP 55。当你为你的域修改 PHP-FPM 后,你可以通过访问 phpinfo 页面来确认。
编程百科
2020-08-27 13:34:01
相关推荐: 一个方便易用的小模板处理类 dedecms5.7更换kindeditor在线编辑器的解决方案 php 操作xml类 不可小视的ERB和capture PHP生成静态html网页的三种方法 php生成静态页面并预览 原理与示例:php+mysql+jquery 生成静态网页(含后台编辑功能) PHP生成静态HTML页面的方法 PHP生成静态HTML页面简单方法
推荐群组: D语言
更多相关推荐
PHP   看到很多朋友在各个地方发帖问PHP生成静态文章系统的方法,以前曾做过这样一个系统,遂谈些看法,以供各位参考。兄弟连PHP培训先带大家回顾一些基本的概念。   一,PHP脚本与动态页面。   PHP脚本是一种服务器端脚本程序,可通过嵌入等方法与HTML文件混合,也可以类,函数封装等形式,以模板的方式对用户请求进行处理。无论以何种方式,它的基本原理是这样的。由客户端提出请求,请求某一页面 -----> WEB服务器引入指定相应脚本进行处理 -----> 脚本被载入服务器 -----> 由服务器指定的PHP解析器对脚本进行解析形成HTML语言形式 ----> 将解析后的HTML语句以包的方式传回给浏览器。由此不难看出,在页面发送到浏览器后,PHP就不存在了,已被转化解析为HTML语句。客户请求为一动态文件,事实上并没有真正的文件存在在那里,是PHP解析而成相对应的页面,然后发送回浏览器。这种页面处理方式被称为“动态页面”。   二,静态页面。   静态页面是指在服务器端确实存在的仅含HTML以及JS,CSS等客户端运行脚本的页面。它的处理方式是。由客户端提出请求,请求某一页面 ----> WEB服务器确认并载入某一页面 ----> WEB服务器将该页面以包的形式传递回浏览器。由这一过程,我们对比一下动态页面,即可方现。动态页面需由WEB服务器的PHP解析器进行解析,而且通常还需连接数据库,进行数据库存取操作,然后才能形成HTML语言信息包;而静态页面,无须解析,无须连接数据库,直接发送,可大大减轻服务器压力,提高服务器负载能力,大幅提供页面打开速度和网站整体打开速度。但其缺点是,不能动态地对请求进行处理,服务器上必须确实存在该文件。   三,模板及模板解析。   模板即尚未填充内容html文件。例如:   temp.html      { title }      this is a { file } file's templets         PHP处理:   templetest.php   author:Matrix@Two_Max";   $fp = fopen ("temp.html","r");   $content = fread ($fp,filesize ("temp.html"));   $content = str_replace ("{ file }",$file,$content);   $content = str_replace ("{ title }",$title,$content);   echo $content;   ?>   模板解析处理,即将经PHP脚本解析处理后得出的结果填充(content)进模板的处理过程。通常借助于模板类。目前较流行的模板解析类有phplib,smarty,fastsmarty等等。模板解析处理的原理通常为替换。也有些程序员习惯将判断,循环等处理放进模板文件中,用解析类处理,典型应用为block概念,简单来说即为一个循环处理。由PHP脚本指定循环次数,如何循环代入等,再由模板解析类具体实施这些操作。   好了,对比过静态页面与动态页面各自的优劣,现在我们就来说说,如何用PHP生成静态文件。   PHP生成静态页面并不是指PHP的动态解析,输出HTML页面,而是指用PHP创建HTML页面。同时因为HTML的不可写性,我们创建的HTML若有修改,则需删掉重新生成即可。(当然你也可以选择用正则进行修改,但个人认为那样做倒不如删掉重新生成来得快捷,有些得不偿失。)   言归正传。用过PHP文件操作函数的PHP FANS知道,PHP中有一个文件操作函数fopen,即打开文件。若文件不存在,则尝试创建。这即是PHP可以用来创建HTML文件的理论基础。只要用来存放HTML文件的文件夹有写权限(即权限定义0777),即可创建文件。(针对UNIX系统而言,Win系统无须考虑。)仍以上例为例,若我们修改最后一句,并指定在test目录下生成一个名为test.html的静态文件:   author:Matrix@Two_Max";   $fp = fopen ("temp.html","r");   $content = fread ($fp,filesize ("temp.html"));   $content = str_replace ("{file}",$file,$content);   $content = str_replace ("{title}",$title,$content);   // echo $content;   $filename = "test/test.html";   $handle = fopen ($filename,"w"); //打开文件指针,创建文件   /*   检查文件是否被创建且可写   */   if (!is_writable ($filename)){   die ("文件:".$filename."不可写,请检查其属性后重试!");   }   if (!fwrite ($handle,$content)){ //将信息写入文件   die ("生成文件".$filename."失败!");   }   fclose ($handle); //关闭指针   die ("创建文件".$filename."成功!");   ?>   实际应用中常见问题解决方案参考:   一,文章列表问题:   在数据库中创建字段,记录文件名,每生成一个文件,将自动生成的文件名存入数据库,对于推荐文章,只需指向存放静态文件的指定文件夹中的该页面即可。利用PHP操作处理文章列表,存为字符串,生成页面时替换此字符串即可。如,在页面中放置文章列表的表格加入标记{articletable},而在PHP处理文件中:   author:Matrix@Two_Max";   $fp = fopen ("temp.html","r");   $content = fread ($fp,filesize ("temp.html"));   $content = str_replace ("{file}",$file,$content);   $content = str_replace ("{title}",$title,$content);   // 生成列表开始   $list = '';   $sql = "select id,title,filename from article";   $query = mysql_query ($sql);   while ($result = mysql_fetch_array ($query)){   $list .= ''.$result['title'].'
';   }   $content .= str_replace ("{articletable}",$list,$content);   //生成列表结束   // echo $content;   $filename = "test/test.html";   $handle = fopen ($filename,"w"); //打开文件指针,创建文件   /*   检查文件是否被创建且可写   */   if (!is_writable ($filename)){   die ("文件:".$filename."不可写,请检查其属性后重试!");   }   if (!fwrite ($handle,$content)){ //将信息写入文件   die ("生成文件".$filename."失败!");   }   fclose ($handle); //关闭指针   die ("创建文件".$filename."成功!");   ?>   二,分页问题。   如我们指定分页时,每页20篇。某子频道列表内文章经数据库查询为45条,则,首先我们通过查询得到如下参数:1,总页数;2,每页篇数。第二步,for ($i = 0; $i < allpages; $i++),页面元素获取,分析,文章生成,都在此循环中执行。不同的是,die ("创建文件".$filename."成功!";这句去掉,放到循环后的显示,因为该语句将中止程序执行。例:   '.$title.'
';   }   $content = str_replace ("{articletable}",$list,$content);   if (is_file ($indexpath)){   @unlink ($indexpath); //若文件已存在,则删除   }   $handle = fopen ($indexpath,"w"); //打开文件指针,创建文件   /*   检查文件是否被创建且可写   */   if (!is_writable ($indexpath)){   echo "文件:".$indexpath."不可写,请检查其属性后重试!"; //修改为echo   }   if (!fwrite ($handle,$content)){ //将信息写入文件   echo "生成文件".$indexpath."失败!"; //修改为echo   }   fclose ($handle); //关闭指针   }   fclose ($fp);   die ("生成分页文件完成,如生成不完全,请检查文件权限系统后重新生成!");   ?>   大致思路如此,其中如其它数据生成,数据输入输出检查,分页内容指向等可酌情在页面中加入。   在实际文章系统处理过程当中,还有许多问题有待考虑,www.lampbrother.net 与动态页面不同之处,需注意的地方还有很多。但大致思路即是如此,其它方面可举一反三而得。
编程百科
2020-08-27 13:33:51
相关推荐: ASP.NET比拼PHP,谁是速度之王 Jsp(UTF-8) Sql Server(UCS-2) UNICODE国际化问题 有感于“论PHP的倒掉” mysql数据库里中文信息显示乱码终结篇 PHP比ASP优秀的七个理由 致初学者:PHP比ASP优秀的七个理由 21天通关Python(仅视频课) 学习MySQL这一篇就够了
推荐群组: 读书空间
更多相关推荐
PHP PHP比ASP优秀的七个理由  ASP是微软公司实现动态网页的一种技术。ASP支持一些脚本语言,主要以VBScripp为主。与ASP相比较,你还可以选择另一中开放源代码编程语言——PHP,PHP培训可以运行在多种操作系统下,其中包括Linux和windows。   虽然ASP是一种不错的技术,但从长远考虑我相信PHP在将来的技术领域里会有不凡的表现。   我认为有七个理由可以说明PHP比ASP更优秀:   1、速度、速度、速度   当我第一次运行PHP脚本程序时,我不禁对自己说:“太快了”,当时我是在仪态166MHZ的机器上运行我的程序的,但运行的速度仍然很快。   ASP是永远也不会象PHP这样快的,因为ASP是建立在COM体系结构之上的。当用VBScript写ASP脚本时,实际上实在使用COM的对象,当向用户浏览器发送信息时,它用的是Response对象的write方法,当它访问数据库和文件系统的时候,它用的是其他的COM对象。这些COM对象的使用使运行速度下降。   在PHP代码中,所有的工作都运行在PHP的内存空间中,也就是说PHP不是基于COM对象的,所以的他的运行速度会快一些www.shanghaixdl.com。   下面是我们在MSSQL7 40次运行一个查询语句的执行时间统计:   PHP Querying MSSQL7 时间(秒)   用 MSSQL extension 01.88   用 ODBC extension 09.54   用 ODBC via COM (ADO) 17.28   用OLEDB via COM 06.19   当我们使用PHP.ODBC,访问数据库用了9.54秒,而用COM接口去连接数据库需要比PHP所用的时间高80%。   OLEDB是微软的一种高速访问数据库的技术,他比ODBC要快。但当我们所PHP和OLEDB的效率实验时,结果是PHP的整体性能比OLEDB高200%,如此的出一个结论,如果不采用COM可以获得较快的执行速度。   当然PHP的执行速度还不是最快的,但我们才刚刚开始起步,我们会逐步的完善他,而且PHP是一种开放源代码编程语言,世界上许多程序员在不断的完善他的技术,相信他一定会比非开放源代码系统获得更高的执行速度的。   2、高级内存管理   在IIS4下,一个ASP脚本header.asp,如果被20个页面所包含,那么运行的时候,在内存当中会保留这20个header.asp的编译副本,IIS5解决了这个问题,但只有windows2000才支持IIS5,由于这种IIS5的不能向下兼容的原因,许多服务器仍然要使用IIS4下的低级的内存管理。   而在PHP中,不会存在这种问题,只有当require时,才会调用某个include文件。   3、没有后顾之忧   我非常憎恨的一件事情就是会买到一件不放心的产品,比如当你买了一辆汽车,但由于发动机是坏的,你需要更换他;当你买了一栋房子的时候,你要去修补漏雨的屋顶。   那么ASP旧乡这些产品一样,当你买了ASP之后,如果你需要加密技术,你就要买ASPEncrypt;当你需要Email管理时,你就要买ServerObjets Qmail;当你需要文件上传时,你还要买Artisans SA-FileUp.   4、MySQL使PHP更精彩   PHP与MySQL的组合既简单又精彩。PHP有许多管理和维护MySQL的工具,对MySQk的支持是最全面的。许多有用的函数如mysql_insert_id和mysql_affected_rows等,其他的数据库则没有。   ASP和PHP都是中型网站的较理想的解决方案,但PHP与MySQL的紧密结合使PHP更加优越。   MySQL的虚度比Microsoft Access速度快,Mssql和Oracle速度比MySQL要快,可是费用较高。   5、Java和C++的变成风格   这个优点只是一个看法。   我知道你不会相信一个Visual Basic程序员会因为PHP有Java和C++的编程风格而转向使用PHP,但你会相信有许多人还是喜欢Java和C++的,PHP是一种具有这两种语言的编程风格的较容易学习的语言。   PHP支持结构化编程,在VB因为他的继承性使用类还是较少的。而PHP的象Java和C++一样的继承性使一个大型的程序中到处都充满了类的影子。   6、Bug的处理。   你是否曾经要求Microsoft修改ASP的一些Bug呢?如果你不是一个象Boeing一样的组织,你无法获得迅速而恰当的修改,把么当你遇到Bug而停止工作时,如果这个Bug不修改,你将无法继续你的工作的。   PHP,当你发现Bug时,你可以修改他,如果你没有专家的水平,你可以请专家修改,并且你的修改会得到开放代码组织的接受和认可。   7、移植性   Microsoft经常修改ASP,下一版本叫ASP+,现在已经开始测试。我相信他们会修改许多我曾经提到过的问题。但也无庸质疑的,Microsoft会将你限制在他们的产品范围之内的。   我曾经是一个苹果机的程序员,当windows95问世后,我开始转变,但许多原来的代码都无法在windows95下运行,这些代码现在被放在一边,我非常的遗憾。所以我不希望在windows下再出现这样的悲剧。   不要忘记Novell曾经也象Microsoft的网络操作系统一样热及一时,但现在已经没有许多人用了,那么Microsoft也会这样的。   我找到了PHP,我仍旧在windows下工作,但我知道PHP代码可以运行在Solaris、Linux和许多其他的操作系统中,我的心里感到安慰。
编程百科
2020-08-27 13:33:43
相关推荐: gb2312编码转化utf8的输出不正常 用ruby实现简体中文和繁体中文的相互转化 被rails文件上传文件名搞疯了,实在没法来! PHP中文乱码解决办法 读取zip文件,不解压缩直接解析,支持文件名中文,解决内容乱码(还是以支付宝对账单为例) php读取目录中文文件名乱码解决方法 PHP导出文件名乱码解决 解决php保存文件时文件名乱码问题 PHP 生成中文文件名乱码
推荐群组: D语言
更多相关推荐
PHP 想必很多朋友在进行utf8编码的php开发上传功能的时候,都会遇到这样的一个问题,就是上传中文文件名的文件时,文件名会变成乱码,其实我们可以用iconv函数对文件名进行重新编码就解决问题了 ( www.itxdl.cn )php文件使用的是UTF-8编码,如果没有猜错APACHE处理用的应该是GBK。想明白了这个问题,就去查找相关的教程了,索性找到了iconv这个函数。 函数原型:string iconv ( string in_charset, string out_charset, string str ) 使用例子:$content = iconv(“GBK”, “UTF-8”, $content); 这个例子的作用就是将$content从GBK转换成UTF-8编码。 乱码问题关键代码: 复制代码 代码如下: $name=iconv("UTF-8","gb2312", $name); 除了这样来解决上传文件中文乱码问题,我们还可以把上传文件重新命名即可。 例 复制代码 代码如下: $sFileName = “sda.php”; $sOriginalFileName = $sFileName; $sExtension = s str($sFileName, (strrpos($sFileName, ‘.’) + 1));//找到扩展名 $sExtension = strtolower($sExtension); $sFileName = date(“YmdHis”).rand(100, 200).”.”.$sExtension; //这样就是我们的新文件名了,全数字的不会有乱码了哦。 以下是一些补充: php上传中文文件名乱码解决方案 复制代码 代码如下: $filepath=”upload/”; $name=$filepath.$_FILES[“upfile”][“name”]; while(file_exists($name)){ $temp=explode(“.”,$name);//分割字符串 $name=$temp[0].”0″.”.”.$temp[1];//主文件名后面加0 } 复制代码 代码如下: //iconv()函数是关键 if(move_uploaded_file($_FILES[“upfile”][“tmp_name”],iconv(“UTF-8″,”gb2312”,$name))){//处理…} 我的PHP编码是UTF-8,其中原因可能是因为操作系统是GBK的原因! 注意:我的服务器是windows xp、apache,估计xp字符集是gbk。因为我的php代码保存为utf-8格式的,在给文件名命名时会出现乱码的情况,所以可以用iconv()函数将原本的utf-8格式的文件名转换为gbk格式的。 php utf8编码 上传中文文件名出现乱码的解决方法 想必很多朋友在进行utf8编码的php开发上传功能的时候,都会遇到这样的一个问题,就是上传中文文件名的文件时,文件名会变成乱码,我们可以用iconv函数对文件名进行重新编码就解决问题了。 复制代码 代码如下: header("Content-Type:text/html;charset=utf-8"); $submit = $_POST['submit']; if(isset($submit) && trim($submit) != ''){ $file = $_FILES['file']; if(isset($file['tmp_name'])){ $name = iconv('utf-8','gb2312',$file['name']); //利用Iconv函数对文件名进行重新编码 if(move_uploaded_file($file['tmp_name'],$name)){ echo '文件上传成功!'; echo '图片信息:'; print_r($file); } } }
编程百科
2020-08-27 13:33:35