背景:
  我正在读一个不太明白的PHP新程序,像空降到一个众林,出现一个包含/读取某文件是一个黑盒子,想问:如何跟踪PHP在一次执行时读取或include了某个文件?(如配置文件,该配置文件有可能是include进来,有可能是通过直接读取的方式,但不明朗,怎么办好呢?)
PHP高级编程群兄弟出招了:
1.有兄弟建议用find命令查找access time(是文档最后一次被读取的时间)。
2.有兄弟建议get_included_files 来看是哪个文件print_r(get_included_files());,
  也顺便提到其它三个精妙的函数:get_included_files ,get_included_path,get_loaded_extensions。
3.也有兄弟提出用安装扩展的方法去实现:http://pecl.php.net/package/inotify
  也可以用上次说的php_AOP
  aop_add_after("file_get_contents()", 'file_open_call');
  file_get_contents("./test.php");
  要是include进来的文件,直接用get_included_files,来判断就好了.(这个函数很厉害,再次有兄弟推荐。)

里面提到AOP,可以参考:
http://hi.baidu.com/bise86/item/a396eed5c8fae8cc1a72b4a1
http://www.croes.org/gerald/projects/aop/documentation_aop_extension_php.pdf

使用inotify防php木马:http://hi.baidu.com/ostech/item/f729c8c2fa8a392447d5c089
php使用inotify实现队列处理:http://blog.jiunile.com/php%E4%BD%BF%E7%94%A8inotify%E5%AE%9E%E7%8E%B0%E9%98%9F%E5%88%97%E5%A4%84%E7%90%86.html

通过rsync+inotify实现数据的实时备份:http://ixdba.blog.51cto.com/2895551/580280
如果是linux与linux还可以使用rsync+inotify方式进行传输,速度也是非常快的....:
http://my.oschina.net/7shell/blog/57355
背景:查找日志文件,可以用它来找最近修改的日志
find /data/www/up.****.com/tmp -type f  -mmin +1
/data/www/up.***.com/tmp/20210802.wxapp.***.com.0945.zip


查找最近30分钟修改的当前目录下的.php文件
find . -name '*.php' -mmin -30
查找最近24小时修改的当前目录下的.php文件
find . -name '*.php' -mtime 0
查找最近24小时修改的当前目录下的.php文件,并列出详细信息
find . -name '*.inc' -mtime 0 -ls
查找当前目录下,最近24-48小时修改过的常规文件。
find . -type f -mtime 1
查找当前目录下,最近1天前修改过的常规文件。
find . -type f -mtime +1
来自:http://goodboy.sinaapp.com/?p=118
SPL里有好多好的东西,但用的人相对较少甚至都想不起来,我在一个ko里就看到一个,offsetSet示例:
代码:

-----------------------------------------------------------------------------------------------------------------------------------------
该SPL函数介绍:
  /**
   * Sets the value at the specified index to newval
   * @link http://www.php.net/manual/en/arrayobject.offsetset.php
   * @param index mixed <p>
   * The index being set.
   * </p>
   * @param newval mixed <p>
   * The new value for the index.
   * </p>
   * @return void
   */
  public function offsetSet ($index, $newval) {}


做下实际的相关SPL函数的测试,也就是相当于可以对一个对象进行添加属性,如类变量,数组等,同时提供相关的操作函数像操作数组一样对类对象进行操作里面的变量,带来了相当方便和灵活性,实践如下:


offsetSet相关函数:
http://www.ruanyifeng.com/blog/2008/07/php_spl_notes.html
更加有助于理解的Url:
http://www.mjplay.com.cn/php/fun/arrayobject.offsetset.html
http://hi.baidu.com/gwsshoddxvcmnte/item/deecccdffb539d1420e2505a
关于SPL的更多笔记,这个百度空间的兄弟写得较多了,如下Url:
PHP SPL,遗落的宝石:http://hi.baidu.com/gwsshoddxvcmnte/item/288a08c477656203c610b25b
PHP SPL 笔记:http://hi.baidu.com/gwsshoddxvcmnte/item/df0239c554dcc52fe80f2e5a
PHP SPL 笔记2:http://hi.baidu.com/gwsshoddxvcmnte/item/deecccdffb539d1420e2505a
PHP SPL 笔记3:http://hi.baidu.com/gwsshoddxvcmnte/item/51d9eef4b33562e41a111f5a
PHP SPL 笔记4:http://hi.baidu.com/gwsshoddxvcmnte/item/039da3012f740e096d90485e
出现两个一样的,于是想了解HTTP_HOST 和 SERVER_NAME 的区别:
一:相同时满足以下三个条件:
1.服务器端口默认80
2.apache或nginx中ServerName设置正确
3.HTTP/1.1协议规范

二:不同点:
$_SERVER['HTTP_HOST']会根据客户端HTTP请求输出信息
$_SERVER['SERVER_NANE']会根据apache或nginx的配置文件中的ServerName值

当端口不为80时
$_SERVER['HTTP_HOST']输出中会带有端口号
$_SERVER['SERVER_NAME']只会直接输出ServerName的值

所以,应尽量使用$_SERVER["HTTP_HOST"],保险,可靠!

PHP中的SERVER预保留变量中HTTP_HOST 和 SERVER_NAME经常是一样的,原因是服务器使用的是默认的端口80,
HTTP_HOST将省略不显示,而HTTP服务的默认端口就是80,所以大多数情况下,HTTP_HOST都没有显示这个端口号。
而如果使用的是ssl链接,那么端口号将被显示出来。
如果你的程序中有设定端口的功能,则可以考虑使用SERVER_NAME ,否则,建议使用HTTP_HOST

来自:http://hi.baidu.com/dream_net/item/9a341555879c963795eb05b4
背景:在以前初始化一个数据库句柄:

为何都这样写单例模式?层层分析:
http://www.cnblogs.com/hongfei/archive/2012/07/07/2580994.html


——————————————————————————————————————
上面Url里提到各种调用调不了,出问题的一个小小总结如下,也有总结不对的,说是静态函数被类调用不需要执行析构函数是不对的,执行了,但没有创建对象是真:
在php中,访问类的方法/变量有两种方法:
1. 创建对象$object = new Class(),然后使用”->”调用:$object->attribute/function,前提是该变量/方法可访问。
2. 直接调用类方法/变量:class::attribute/function,无论是静态/非静态都可以。但是有前提条件:
A. 如果是变量,需要该变量可访问。
B. 如果是方法,除了该方法可访问外,还需要满足:
b1) 如果是静态方法,没有特殊条件;
b2) 如果是非静态方法,需要改方法中没有使用$this,即没有调用非静态的变量/方法,当然,调用静态的变量/方法没有问题。

然后我们再看一下使用$object->… 和使用class::… 都有什么区别:
1. 使用$object->… ,需要执行构造函数创建对象;
2. 使用class::… 调用静态方法/变量,不需要执行构造函数创建对象;
3. 使用class::… 调用非静态方法/变量,也不需要执行构造函数创建对象。

然后奇怪的地方就出来了,既然2和3都一样,那静态方法/变量存在还有什么意义呢?
差异还是显然存在的,如下:
1. 静态变量
静态成员只保留一个变量值,而这个变量值对所有的实例都是有效,也就是说,所有的实例共享这个成员。
2. 静态方法
静态方法可以直接使用class::… 来调用,而非静态方法需要满足一定限制条件才能使用class::.. 的方法调用,如之前所述

来自:http://www.jb51.net/article/29717.htm

这时我们不得不重新初始化一个数据库句柄,试想多个应用场景下,这样的代码是多么可怕啊?!

有些朋友或许会说,我也可以不这样做啊,我直接利用global关键字不就可以了吗?的确,global可以解决问题,也起到了单例模式的作用,但是 OOP中,我们拒绝这样来编写代码,因为global存在安全隐患,请参考相关书籍,同时单例模式恰恰是对全局变量的一种改进,避免了那些存储唯一实例的 全局变量污染命名空间
global $db;  //OOP中,我们不提倡这样编写代码
使用单例模式编码

如有的KO框架里写的读取配置文件:

阅读全文
如何选中整个行?
左键单击三次要选中的某一行,这样就选中整个行了。
阅读全文
背景:我发现postfix安装后有很多sendmail的僵尸进程,怎么办,最彻底的办法是删除掉这个sendmail,最后发现其vps上有postfix,于是删除掉。
删除postfix步骤,它默认会安装sendmail的:
[root@iZ25dcp92ckZ ~]# rpm -e postfix-2.10.1-6.el7.x86_64
错误:依赖检测失败:
        /usr/sbin/sendmail 被 (已安裝) redhat-lsb-core-4.1-27.el7.centos.1.x86_64 需要

[root@iZ25dcp92ckZ ~]# rpm -e redhat-lsb-core-4.1-27.el7.centos.1.x86_64
[root@iZ25dcp92ckZ ~]# rpm -e postfix-2.10.1-6.el7.x86_64    
whereis sendmail
sendmail:  //没有了sendmail。
安装postfix:
http://free.yes81.net/yes81/view-13491.html
阅读全文
模拟个UC的原因是,有些网站,指明要UC浏览器,所以对于我们Chrome来讲,其实也能模仿UC,目的达到也就OK了,
如下:
苹果按Option+Command,Windows按下F12,在Elements的右边有一个竖着的三个点,点一下,里面有一个项是把这个挑食工具放浏览器的左边还是右边,
在下面还有一个项是Settings 点进去后,下面有一个Device,输入自己的浏览器UC,然后,再在网上找一个它对应的浏览器头,它前面有一个CheckBox,勾选上,其它的不勾选即可。再打开你想要看的网站,就Ok了。

IOS UC:
Mozilla/5.0 (iPhone; CPU iPhone OS 10_1_1 like Mac OS X; zh-CN) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/14B100 UCBrowser/11.2.6.887 Mobile AliApp(TUnionSDK/0.1.6)

Android UC:
Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.122 Mobile Safari/537.36 UCBrowser

最后,要想模拟生效得F12后,进入开发者模拟点模拟的那个图标才行。

参考自https://jingyan.baidu.com/article/46650658235a46f549e5f893.html,但是新版本的Chrome不一样,如下:
来自:http://www.173.net/blogs/5




Chrome dhc插件-DHC是一款可以模拟HTTP客户端向服务器发送指定数据的谷歌浏览器插件。
http://chromecj.com/web-development/2015-08/549.html


======================================================================
有些网站对IPAD和PC产生不同的HTML代码
由于IPAD的safari不支持查看源码,
所以,将firefox模拟成IPAD可以更好的了解别人写的代码

在firefox地址栏打上 about:config
进入config设置
将general.useragent.extra.firefox
修改成Mozilla/5.0 (iPad; U; CPU OS 3_2_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B500 Safari/531.21.10
这样就欺骗了某些用useragent判断客户端的服务器

查看一些为HTML5写的代码了。
测试一下,连新浪博客都认为我是在用ipad上网。


阅读全文
外国交响乐演绎《西游记》片头曲
Die Reise nach Westen
Belive,my heart...
;...shall bring you to God
I shall die to find life
He gathers in the sheaves of those who have died
http://www.tudou.com/programs/view/kiRJW3nHBC0/

http://de.wikipedia.org/wiki/Die_Reise_nach_Westen
http://www.acfun.tv/v/ac550885
http://levi.cg.am/?p=930

http://www.mb5u.com/biancheng/php/php_94026.html

http://www.phper.org.cn/?post=64

http://hi.baidu.com/seatle888/item/db73f4db0a084919d78ed099

http://justcoding.iteye.com/blog/602494
背景:两种盘的读写速度不一样,于是要看一下到底是哪种:
df -h
有sas硬盘吗 ?还是SATA啊?
linux下SATA硬盘是 hda , SCSI硬盘是sda
背景:php做cli模式(也就是后台终端运行时),通过ps aux|grep php时出现的都是如php的文件名的进程,于是在php5.5里加入了类似windows'下的服务名来进行标识。

PHP5.5新增cli_set_process_title/cli_get_process_title, 这样一来, 大家可以给后台运行脚本起一个有意义的名字了. https://wiki.php.net/rfc/cli_process_title
雨林木风系统Ghost:IE QuickLanch
C:\Documents and Settings\Default User\Application Data\Microsoft\Internet Explorer\Quick Launch
C:\Documents and Settings\Administrator\Application Data\Microsoft\Internet Explorer\Quick Launch

都有:启动 Internet Explorer 浏览器.lnk
右键属性:
"C:\Program Files\Internet Explorer\IEXPLORE.EXE"  http://www.24611.com
于是修改去掉;24611这个网址。发现有程序在访问,但用;wholockme来看没有。
操作:常规属性去掉只读,同时去掉这个网址即可。
[易*]韩天峰(*********)  17:34:07
http://pecl.php.net/package/event
event扩展
[易*]韩天峰(*********)  17:51:42
http://pecl.php.net/package/AOP
PHP  AOP编程扩展
twinhuang-广平(*********)  17:56:11
aop还是挺不错的,可以做很多有趣的事
Jack-回忆未来(*********)  17:57:50
AOP是什么意思?
面向切面编程
maxiezhang-qz***(*********)  17:58:37
是指不改变原来程序结构,可以强势插入代码么?
令狐雨辰(*********) 2013/3/8 下午 18:22:15
https://github.com/AOP-PHP/AOP
就刚讨论的这个呀
PHP-干不明白(*********) 2013/3/8 下午 18:22:33
o
Sango(*********) 2013/3/8 下午 18:22:49
热部署真是个银弹啊
令狐雨辰(*********) 2013/3/8 下午 18:25:08
这个现在还有些BUG
https://github.com/AOP-PHP/AOP/issues
等个稳定版,直接用上。
Rango(*********) 2013/3/8 下午 18:25:15
统计执行时间也可以用AOP,before前记录一个时间,after再记录一个
令狐雨辰(*********) 2013/3/8 下午 18:25:50
嗯是的。总之确实是很有用。
Sango(*********) 2013/3/8 下午 18:22:00
在php热部署的能力下,加上xdebug,这玩意要逆天了
分页: 97/339 第一页 上页 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 下页 最后页 [ 显示模式: 摘要 | 列表 ]