海运的博客

升级PHP安装eAccelerator引发的悲剧

发布时间:December 25, 2013 // 分类:PHP // No Comments

没事升级了下PHP并顺便安装了eAccelerator组件,没想到竟然让偶折腾了几个小时。。。
安装完成后访问后台空白,访问探针文件502错误,其它都正常,看Nginx日志:

recv() failed (104: Connection reset by peer) while reading response header from upstream

看样子是后端PHP-FPM的问题,接着看其日志:

child 4736 exited on signal 11 (SIGSEGV) after 1336.002675 seconds from start

果真如此,配置让其更详细的输出错误:

catch_workers_output = yes

再次查看PHP-FPM日志:

[notice] EACCELERATOR(5646): PHP crashed on opline 674 of main() 

竟然是eAccelerator的问题,删除之,恢复正常。

PHP替换数组内字符

发布时间:December 23, 2013 // 分类:PHP // No Comments

<?php
   $columns = array('11', '12', '13');
   foreach ( $columns as &$value) 
   {
      $value  = str_replace('1', '5', $value);
   }
   foreach ($columns as $key => $value)
   {
      $columns[$key]  = str_replace('5', '1', $value);
   }
   print_r($columns);
?>

PHP异或加密解密

发布时间:December 23, 2013 // 分类:PHP // No Comments

对于安全性要求不高的情况下足够用了,性能从高到低的两种实现:

<?php
   function xor_enc($string, $operation, $key = 'abcdf') {
      $string = $operation == 'ENCODE' ? $string : base64_decode($string);
      $len1 = strlen($string);
      $len2 = strlen($key);
      if($len1 > $len2) $key = str_repeat($key, ceil($len1 / $len2));
      $string = $operation == 'ENCODE' ? base64_encode($string ^ $key) : $string ^ $key;
      return $string;
   }
?>
   function xor_enc($string, $operation = 'ENCODE', $key = 'abcd') {
      $txt = $operation == 'ENCODE' ? $string : base64_decode($string);
      $len = strlen($key);
      $code = '';
      for ($i = 0; $i < strlen($string); $i ++) {
         $k = $i % $len;
         $code .= $string [$i] ^ $key [$k];
      }
      $code = $operation == 'ENCODE' ? base64_encode($code) : $code;
      return $code;
   }

PHP随机生成英文字符/密码及可阅读用户名

发布时间:December 18, 2013 // 分类:PHP // No Comments

<?php
   function genstr($num)   
   {  
      for ($i = 0; $i <= $num; $i++)  
      {  
         $str .= chr(mt_rand(97, 122));  
      }  
      return $str;  
   }  

   function geenstr($num) {
      return substr(str_shuffle('abcdefghijklmnopqrstuvwxyz'), 0, $num);
   }

   echo genstr(6); 
?>

20231111更新:

<?php
function isEveryCharInString($needle, $haystack) {
  for ($i = 0; $i < strlen($needle); $i++) {
    if (strpos($haystack, $needle[$i]) !== false) {
      return true; 
    }
  }
  return false; 
}

function readable_random_string($length = 14){ 
  $consonants = array("b","c","d","f","g","h","j","k","l","m","n","p","r","s","t","v","w","x","y","z"); 
  $conscount = count($consonants) - 1;
  $vowels = array("a","e","i","o","u"); 
  $vowcount = count($vowels) - 1;
  $password = ''; 
  for($i = 1; $i <= $length; $i++) { 
    if ($i % 2 == 0) {
      $password .= $vowels[random_int(0, $vowcount)]; 
    } else {
      $password .= $consonants[random_int(0, $conscount)]; 
    }
  } 
  return $password; 
}

function generate_password($length = 14, $special = true, $extra_special = true) {
  $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
  $special_chars = '!@#$%^&*()';
  $extra_special_chars = '-_[]{}<>~`+=,.;:/\?|';
  //$extra_special_chars = '-_ []{}<>~`+=,.;:/?|';
  if ($special) {
    $chars .= $special_chars;
  }
  if ($extra_special) {
    $chars .= $extra_special_chars;
  }

  while (true) {
    $password = '';
    for ($i = 1; $i <= $length; $i++) {
      $password .= substr($chars, random_int(0, strlen($chars) - 1), 1);
    }
    if (($special && ! isEveryCharInString($password, $special_chars)) || ($extra_special && ! isEveryCharInString($password, $extra_special_chars))) {
      continue;
    }
    return $password;
  }
}

$length = 14;
echo readable_random_string($length).PHP_EOL;
echo generate_password($length, false, false).PHP_EOL;
echo generate_password($length, true, false).PHP_EOL;
echo generate_password($length).PHP_EOL;

PHP随机生成汉字

发布时间:December 18, 2013 // 分类:PHP // No Comments

UTF-8:

<?php
   function genstr($num)
   {
      for($i=0;$i<=$num;$i++)
      {
         $str .= '&#'.rand(19968, 40869).';';
      }

      return mb_convert_encoding($str, "UTF-8", "HTML-ENTITIES");
   }
   echo genstr(mt_rand(1,8));
?>

GBK:

<?php
   function genstr($num)
   {
      for($i=0;$i<=$num;$i++)
      {
         $str .= chr(rand(0xB0,0xF7)).chr(rand(0xA1,0xFE));
      }

      return $str;
   }
   echo genstr(mt_rand(1,8));
?>
分类
最新文章
最近回复
  • 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 ...