分类目录归档:PHP

thinkphp的调试信息如何关闭

经常上线的Thinkphp 项目带着debug信息,下面来关闭thinkphp的调试信息 1.在 /common/conf 修改config.php ‘SHOW_PAGE_TRACE’ =>FALSE, 2. 也修改了入口文件根目录下的index.php define(’APP_DEBUG’, false); 3.最后把 /Think/Common/Conf/debug.php 全都注释掉了。还是有调试的出来。 4.runtime 缓存文件全部删除掉

发表在 PHP | 标签为 | 留下评论

一次性备份mysql全部的数据库

遍历mysql 数据库 有多少表 #!/bin/sh BIN_DIR="/usr/local/mysql/bin" DATE=`date +%F` BCK_DIR="/backup/backupwebsite/mysql/all/$DATE" mkdir -p $BCK_DIR DBS=`mysql -Bse "show databases"|grep -v "information_schema" |grep -v "test"` for DB_NAME in $DBS do echo $DB_NAME done 一次性备份mysql数据库所有表 #!/bin/sh BIN_DIR="/usr/local/mysql/bin" DATE=`date +%F` BCK_DIR="/backup/backupwebsite/mysql/all/$DATE" mkdir -p $BCK_DIR DBS=`mysql -Bse "show … 继续阅读

发表在 Linux, PHP | 留下评论

windows下的TortoiseSVN自动提交SVN

写个bat 调用exe文件 svn.bat cd C:\Program Files\TortoiseSVN\bin start TortoiseProc.exe /command:update /path:"D:\SVNBack\" /closeonend:3 closeonend:3 没有异常就关闭窗口 测试的时候可以加上这两句 echo 提交完成,自动退出 pause 每隔一分钟执行一次提交(有点频繁,客观可以根据月小升的这个改成30分钟一次) /sc表示指定计划频率,/mo时间间隔,/tn指定的唯一任务名,/tr要执行的程序路径。更详细说明可以通过SCHTASKS /Create /?查看。 schtasks /create /sc minute /mo 1 /tn "mySvnTask" /tr D:\SVNBack\svn.bat 停止任务执行 schtasks /end /tn mySvnTask 删除任务执行 schtasks /delete /tn … 继续阅读

发表在 PHP | 标签为 , , | 留下评论

DEVSQL STDEVA 方差标准差概念,及代码实现

标准差主要为了测算样本离散的程度,比如用来衡量一个学生成绩的稳定性。股票价格的稳定性。数学的魔力还是蛮多的。 DEVSQ 返回数据点与各自样本平均值差的平方和 DEVSQ(number1,number2,…….)  Excel中有STDEV、STDEVP;STDEVA,STDEVPA四个函数,分别表示样本标准差、总体标准差;包含逻辑值运算的样本标准差、包含逻辑值运算的总体标准差(excel用的是“标准偏差”字样)。 在计算方法上的差异是:样本标准差^2=(样本方差/(数据个数-1));总体标准差^2=(总体方差/(数据个数))。 函数的excel分解: ⑴stdev()函数可以分解为(假设样本数据为A1:E10这样一个矩阵): stdev(A1:E10)=sqrt(DEVSQ(A1:E10)/(COUNT(A1:E10)-1)) ⑵stdevp()函数可以分解为(假设总体数据为A1:E10这样一个矩阵): stdevp(A1:E10)=sqrt(DEVSQ(A1:E10)/(COUNT(A1:E10))) 同样的道理stdeva()与stdevpa()也有同样的分解方法。 一般使用stdevp() 总体标准差 标准差(Standard Deviation),在概率统计中最常使用作为统计分布程度(statistical dispersion)上的测量。标准差定义是总体各单位标准值与其平均数离差平方的算术平均数的平方根。它反映组内个体间的离散程度。测量到分布程度的结果,原则上具有两种性质: 为非负数值, 与测量资料具有相同单位。一个总量的标准差或一个随机变量的标准差,及一个子集合样品数的标准差之间,有所差别。 标准计算公式: 假设有一组数值X₁,X₂,X₃,……Xn(皆为实数),其平均值(算术平均值)为μ,公式如图1。  标准差也被称为标准偏差,或者实验标准差,公式为  。 简单来说,标准差是一组数据平均值分散程度的一种度量。一个较大的标准差,代表大部分数值和其平均值之间差异较大;一个较小的标准差,代表这些数值较接近平均值。 <?php /* 方差计算 */   $arr = array();   $str = "95,85,75,65,55,45"; $arr … 继续阅读

发表在 PHP | 标签为 , | 留下评论

apache 自带压力测试工具ab 来场测试吧

apache自带压力测试工具 叫 ab 装了apache 在bin下就有了。 ab -n 20 -c 10 http://java-er.com/ -n 请求数量 -c并发数 你也可以 ab -n 1000 -c 100 your domain 返回结果 This is ApacheBench, Version 2.3 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache … 继续阅读

发表在 JAVA, Linux, PHP | 标签为 , , | 留下评论

php数组的21个操作合并,拆分,删除,排序…

1. 合并数组 array_merge()函数将数组合并到一起,返回一个联合的数组。所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次迫加。其形式为: array array_merge (array array1 array2…,arrayN) 这个函数将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。 如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。 如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。 2. 追加数组 array_merge_recursive()函数与array_merge()相同,可以将两个或多个数组合并在一起,形成一个联合的数组.两者之间的区别在于,当某个输入数组中的某个键己经存在于结果数组中时该函数会采取不同的处理方式.array_merge()会覆盖前面存在的键/值对,替换为当前输入数组中的键/值对,而array_merge_recursive()将把两个值合并在一起,形成一个新的数组,并以原有的键作为数组名。还有一个数组合并的形式,就是递归追加数组。其形式为: array array_merge_recursive(array array1,array array2[…,array arrayN]) 程序实例如下: 现在键 mango 指向一个数组,这个数组由两个颜色值组成的索引数组。 3. 连接数组 array_combine()函数会得到一个新数组,它由一组提交的键和对应的值组成。其形式为: array array_combine(array keys,array values) 注意,两个输入数组必须大小相同,不能为空。示例如下 4. 拆分数组 array_slice() array_slice()函数将返回数组中的一部分,从键offset开始,到offset+length位置结束。其形式: array array_slice (array array, int … 继续阅读

发表在 PHP | 标签为 , , | 留下评论

海外支付stripe对接支付

strip支付 https://stripe.com/docs/checkout/tutorial <form action="index.php" method="POST"> <script src="https://checkout.stripe.com/checkout.js" class="stripe-button" data-key="pk_test_wIAv7SdDJV2B6zPPUdnXnJCd" data-amount="999" data-name="Leoptique Inc." data-description="Widget" data-image="https://stripe.com/img/documentation/checkout/marketplace.png" data-locale="auto"> </script>     </form> 测试的信用卡号 4242424242424242 各种测试的信用卡 https://stripe.com/docs/testing#international-cards 注意填写日期的时候,尽管可以随便写,但是你不能写年份低于当前的,比如15 就不行。我写19就可以了 2019年到期 2015年到期,就不行了,说明卡过期了。 strip 返回的数据,采用POST方式 array(3) { ["stripeToken"]=> string(28) "tok_19xSp5GoFgQiAmhVvbVsCIGI" ["stripeTokenType"]=> string(4) "card" ["stripeEmail"]=> string(15) "asdasdf@afd.com" … 继续阅读

发表在 PHP | 标签为 , , , | 留下评论

php小函数,遍历文件夹的4种姿态

php遍历文件夹,不少时候还是很需要的 /*获取所有文件*/ function get_all_files( $path ){ $list = array(); foreach( glob( $path . ‘/*’) as $item ){ if( is_dir( $item ) ){ $list = array_merge( $list , get_all_files( $item ) ); } else{ $list[] = $item; } } return $list; … 继续阅读

发表在 PHP | 标签为 , , | 留下评论

mysql 调用,新手常犯的10个错误

经常收到安全部门的警告邮件,SQL注入,XSS攻击漏洞,等等。偶尔还被黑客挂了小马,郁闷不。 数据库执行太慢(月小升博客的经验,基本是没有正确使用索引导致) 看看MYSQL常犯的11个错误 1、使用MyISAM而不是InnoDB MySQL有很多的数据库引擎,单一般也就用MyISAM和InnoDB。 MyISAM是默认使用的。但是除非你是建立一个非常简单的数据库或者只是实验性的,那么到大多数时候这个选择是错误的。MyISAM不支持外键的 约束,这是保证数据完整性的精华所在啊。另外,MyISAM会在添加或者更新数据的时候将整个表锁住,这在以后的扩展性能上会有很大的问题。 解决办法很简单:使用InnoDB。 2、使用PHP的mysql方法 PHP从一开始就提供了MySQL的函数库。很多程序都依赖于mysql_connect、mysql_query、mysql_fetch_assoc等等,但是PHP手册中建议: 如果你使用的MySQL版本在4.1.3之后,那么强烈建议使用mysqli扩展。 mysqli,或者说MySQL的高级扩展,有一些优点: 有面向对象的接口 prepared statements(预处理语句,可以有效防止SQL-注入攻击,还能提高性能) 支持多种语句和事务 另外,如果你想支持多数据库那么应该考虑一下PDO。 3、不过滤用户输入 应该是:永远别相信用户的输入。用后端的PHP来校验过滤每一条输入的信息,不要相信JAVAscript。像下面这样的SQL语句很容易就会被攻击: $username = $_POST["name"]; $password = $_POST["password"]; $sql = "SELECT userid FROM usertable WHERE username=’$username’AND password=’$password’;"; // run query… 这样的代码,如果用户输入”admin’;”那么,就相当于下面这条了: SELECT userid … 继续阅读

发表在 PHP, 数据库 | 标签为 , , | 留下评论

php九大缓存技术,你知道几个?

月小升经常的缓存算法是生成固定静态文件,让Nginx访问这个静态文件。如果会发生更新,那么后台更新文章,删除这个文件,程序访问这个静态文件不存在的时候,自动生成即可。 其实除了文件缓存,还有很多办法。据我所知道的Ecshop和Discuz用了很多SQL语句的缓存。比如首页推荐的产品,可以生成数据序列化存入数据库,避免下次加载发生多次sql查询 下面看到的9个技术,以前也听说过,不过这篇比较全面的php缓存文章,还是不错的。 1、全页面静态化缓存 也就是将页面全部生成html静态页面,用户访问时直接访问的静态页面,而不会去走php服务器解析的流程。此种方式,在CMS系统中比较常见,比如dedecms; 一种比较常用的实现方式是用输出缓存: Ob_start() ******要运行的代码******* $content = Ob_get_contents(); ****将缓存内容写入html文件***** Ob_end_clean(); 2、页面部分缓存 该种方式,是将一个页面中不经常变的部分进行静态缓存,而经常变化的块不缓存,最后组装在一起显示;可以使用类似于ob_get_contents的方式实现,也可以利用类似ESI之类的页面片段缓存策略,使其用来做动态页面中相对静态的片段部分的缓存(ESI技术,请baidu,此处不详讲)。 该种方式可以用于如商城中的商品页; 3、数据缓存 顾名思义,就是缓存数据的一种方式;比如,商城中的某个商品信息,当用商品id去请求时,就会得出包括店铺信息、商品信息等数据,此时就可以将这些数据缓存到一个php文件中,文件名包含商品id来建一个唯一标示;下一次有人想查看这个商品时,首先就直接调这个文件里面的信息,而不用再去数据库查询;其实缓存文件中缓存的就是一个php数组之类; Ecmall商城系统里面就用了这种方式; 4、查询缓存 其实这跟数据缓存是一个思路,就是根据查询语句来缓存;将查询得到的数据缓存在一个文件中,下次遇到相同的查询时,就直接先从这个文件里面调数据,不会再去查数据库;但此处的缓存文件名可能就需要以查询语句为基点来建立唯一标示; 按时间变更进行缓存 其实,这一条不是真正的缓存方式;上面的2、3、4的缓存技术一般都用到了时间变更判断;就是对于缓存文件您需要设一个有效时间,在这个有效时间内,相同的访问才会先取缓存文件的内容,但是超过设定的缓存时间,就需要重新从数据库中获取数据,并生产最新的缓存文件;比如,我将我们商城的首页就是设置2个小时更新一次; 5、按内容变更进行缓存 这个也并非独立的缓存技术,需结合着用;就是当数据库内容被修改时,即刻更新缓存文件; 比如,一个人流量很大的商城,商品很多,商品表必然比较大,这表的压力也比较重;我们就可以对商品显示页进行页面缓存; 当商家在后台修改这个商品的信息时,点击保存,我们同时就更新缓存文件;那么,买家访问这个商品信息时,实际上访问的是一个静态页面,而不需要再去访问数据库; 试想,如果对商品页不缓存,那么每次访问一个商品就要去数据库查一次,如果有10万人在线浏览商品,那服务器压力就大了; 6、内存式缓存 提到这个,可能大家想到的首先就是Memcached;memcached是高性能的分布式内存缓存服务器。 一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、 提高可扩展性。 它就是将需要缓存的信息,缓存到系统内存中,需要获取信息时,直接到内存中取;比较常用的方式就是 key–>value方式; <?php $memcachehost = ’192.168.6.191′; $memcacheport = … 继续阅读

发表在 PHP, 数据库 | 标签为 | 留下评论