<?php
function url_base64_encode($string) {
$data = base64_encode($string);
$data = str_replace(array('+','/','='),array('-','_',''),$data);
return $data;
}
function url_base64_decode($string) {
$data = str_replace(array('-','_'),array('+','/'),$string);
$mod4 = strlen($data) % 4;
if ($mod4) {
$data .= substr('====', $mod4);
}
return base64_decode($data);
}
function encrypt($key, $str) {
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_ECB),MCRYPT_DEV_URANDOM);
$str_encrypt = mcrypt_encrypt(MCRYPT_RIJNDAEL_128,$key,$str,MCRYPT_MODE_ECB,$iv);
return trim(url_base64_encode($str_encrypt));
}
function decrypt($key, $str_encrypt) {
$str_encrypt = trim(url_base64_decode($str_encrypt));
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_ECB),MCRYPT_DEV_URANDOM);
$str_decrypt = mcrypt_decrypt(MCRYPT_RIJNDAEL_128,$key,$str_encrypt,MCRYPT_MODE_ECB,$iv);
return trim($str_decrypt);
}
echo encrypt('key','http://www.baidu.com////aaaa/bbbb/ccd//ddd')."\n";
echo decrypt('key','zPsrxzCmqAAvlLwv4E7AlI346XTbaw1hAOoPZhtD3sKw__EIxmWpyHTEp4u2skGM')."\n";
?>
PHP简单加密解密函数
发布时间:December 3, 2013 // 分类:PHP // No Comments
PHP获取域名所有MX A记录
发布时间:December 3, 2013 // 分类:PHP // No Comments
<?php
if (getmxrr("qq.com", $mxhosts, $mxweights)) {
foreach ($mxhosts as $host) {
$hosts[] = dns_get_record($host, DNS_A);
}
}
function getall_by_key(array $arr, $key){
if (!trim($key)) return false;
preg_match_all("/\"$key\";\w{1}:(?:\d+:|)(.*?);/", serialize($arr), $output);
return $output[1];
}
print_r(getall_by_key($hosts, 'ip'));
?>
PHP多进程同时写文件
发布时间:December 1, 2013 // 分类:PHP // No Comments
使用系统提供的flock函数:
<?php
function ffwrite($filename,$content) {
$file = fopen("$filename","a");
while(1) {
if (flock($file,LOCK_EX))
{
fwrite($file,$content);
flock($file,LOCK_UN);
fclose($file);
break;
} else {
usleep(1000);
}
}
}
?>
或根据创建文件判断其它进程是否在写操作,性能略差,测试1000次20进程写操作慢3%。
<?php
function _fwrite($filename, $content) {
$filename_lock = $filename . '.lock';
while(1)
{
if(file_exists($filename_lock))
{
usleep(1000);
} else {
touch($filename_lock);
$f = fopen($filename, 'a');
fwrite($f, "$content");
fclose($f);
unlink($filename_lock);
break;
}
}
if(file_exists($filename_lock))
{
unlink($filename_lock);
}
}
?>
PHP读取大文件指定行
发布时间:December 1, 2013 // 分类:PHP // No Comments
<?php
function getFileLines($filename, $startLine = 1, $endLine = 50, $method = 'rb'){
$content = array();
if (version_compare(PHP_VERSION, '5.1.0', '>=')){ // 5.1版本之上使用Splfileobject
$count = $endLine - $startLine;
$fp = new SplFileObject($filename, $method);
$fp -> seek($startLine - 1); // 转到$startLine行,seek方法从0开始计数
for ($i = 0; $i <= $count; ++$i){
$content[] = trim(($fp -> current()), "\n"); //current()方法取当前行清除换行保存到数组
$fp -> next(); //循环下一行
}
}else{ // PHP<5.1
$fp = fopen($filename, $method);
if (!$fp)
return 'error:can not read file';
for ($i = 1; $i < $startLine; ++$i){ //定位到$startLine行
fgets($fp);
}
for ($i; $i <= $endLine; ++$i){
$content[] = fgets($fp); //从$startLine行开始循环读取到$endLine行
}
fclose($fp);
}
return array_filter($content); //返回array_filter(flase,null,0)过滤后的数组
}
?>
示例:
<?php
$filename = 'file.txt';
$start = 1;
$end = 10;
$count = $end - $start;
while (true){
$data = getFileLines($filename, $start, $end);
// var_dump($data);
$rev = ver($data);
if($data[9] == ''){
die("End");
sleep(10);
}
$start = $start + 10;
$end = $end + 10;
}
?>
PHP计算脚本执行时间
发布时间:December 1, 2013 // 分类:PHP // No Comments
<?php
$start = microtime ( true );
sleep(2);
$end = microtime ( true );
echo "脚本执行时间".($end - $start)."\n";
?>
分类
- Apache (13)
- Nginx (45)
- PHP (86)
- IIS (8)
- Mail (17)
- DNS (16)
- Cacti (14)
- Squid (5)
- Nagios (4)
- Puppet (7)
- CentOS (13)
- Iptables (23)
- RADIUS (3)
- OpenWrt (41)
- DD-WRT (1)
- VMware (9)
- 网站程序 (2)
- 备份存储 (11)
- 常用软件 (20)
- 日记分析 (10)
- Linux基础 (18)
- 欧诺代理 (0)
- Linux服务 (18)
- 系统监控 (4)
- 流量监控 (7)
- 虚拟化 (28)
- 伪静态 (2)
- LVM (3)
- Shell (18)
- 高可用 (2)
- 数据库 (16)
- FreeBSD (3)
- 网络安全 (25)
- Windows (35)
- 网络工具 (22)
- 控制面板 (3)
- 系统调优 (10)
- Cisco (3)
- VPN (6)
- ROS (20)
- Vim (14)
- KMS (4)
- PXE (2)
- Mac (1)
- Git (1)
- PE (1)
- LNS (2)
- Xshell (7)
- Firefox (13)
- Cygwin (4)
- OpenSSL (9)
- Sandboxie (3)
- StrokesPlus (1)
- AutoHotKey (4)
- Total Commander (3)
- WordPress (3)
- iMacros (6)
- Typecho (2)
- Ollydbg (1)
- Photoshop (1)
- 正则 (3)
- Debian (3)
- Python (8)
- NoSQL (6)
- 消息队列 (4)
- JS (7)
- Tmux (3)
- GO (7)
- HHVM (2)
- 算法 (1)
- Docker (2)
- PT (15)
- N1 (16)
- K2P (6)
- LUKS (4)
最新文章
- debian12下initramfs-tools配置ip子网掩码255.255.255.255/32失败解决
- iPhone查看屏幕供应商
- 光猫拨号ImmortalWrt/OpenWRT路由获取ipv6遇到的问题
- php-fpm错误error_log日志配置
- debian-12/bookworm安装mariadb10.3和mysql5.6
- smokeping主从配置及遇到的问题
- openwrt/linux使用tcpdump/nflog ulogd记录iptables日志
- tmux bash shell自动保存history
- ImmortalWrt/OpenWRT为guest wifi网络配置ipv6 nat6
- PVE更新upgrade遇到The following packages have been kept back
最近回复
- opnfense: 谢谢博主!!!解决问题了!!!我之前一直以为内置的odhcp6就是唯一管理ipv6的方式
- liyk: 这个方法获取的IPv6大概20分钟之后就会失效,默认路由先消失,然后Global IPV6再消失
- 海运: 不好意思,没有。
- zongboa: 您好,請問一下有immortalwrt設定guest Wi-Fi的GUI教學嗎?感謝您。
- 海运: 恩山有很多。
- swsend: 大佬可以分享一下固件吗,谢谢。
- Jimmy: 方法一 nghtp3步骤需要改成如下才能编译成功: git clone https://git...
- 海运: 地址格式和udpxy一样,udpxy和msd_lite能用这个就能用。
- 1: 怎么用 编译后的程序在家里路由器内任意一台设备上运行就可以吗?比如笔记本电脑 m参数是笔记本的...
- 孤狼: ups_status_set: seems that UPS [BK650M2-CH] is ...
归档
- February 2025
- August 2024
- May 2024
- February 2024
- January 2024
- December 2023
- November 2023
- October 2023
- September 2023
- August 2023
- May 2023
- April 2023
- February 2023
- January 2023
- December 2022
- September 2022
- July 2022
- April 2022
- March 2022
- February 2022
- January 2022
- December 2021
- November 2021
- April 2021
- March 2021
- February 2021
- January 2021
- December 2020
- November 2020
- October 2020
- September 2020
- July 2020
- May 2020
- April 2020
- March 2020
- February 2020
- January 2020
- December 2019
- November 2019
- July 2019
- April 2019
- March 2019
- February 2019
- January 2019
- December 2018
- November 2018
- October 2018
- September 2018
- August 2018
- July 2018
- June 2018
- April 2018
- March 2018
- February 2018
- January 2018
- December 2017
- October 2017
- September 2017
- August 2017
- July 2017
- April 2017
- March 2017
- February 2017
- January 2017
- December 2016
- November 2016
- July 2016
- June 2016
- November 2015
- October 2015
- September 2015
- August 2015
- July 2015
- June 2015
- May 2015
- April 2015
- March 2015
- February 2015
- January 2015
- December 2014
- November 2014
- October 2014
- September 2014
- August 2014
- July 2014
- June 2014
- May 2014
- April 2014
- March 2014
- February 2014
- January 2014
- December 2013
- November 2013
- October 2013
- August 2013
- July 2013
- June 2013
- May 2013
- April 2013
- March 2013
- February 2013
- January 2013
- December 2012
- November 2012
- October 2012
- September 2012
- August 2012
- July 2012
- June 2012
- May 2012
- April 2012
- March 2012
- February 2012
- October 2011
- September 2011
- August 2011
- July 2011