浏览模式: 普通 | 列表

nginx 虚拟目录的设置alias

[ 2020-06-13 15:18:12 | 作者: admin ]
p.s. 在增加虚拟目录的时候,location块可以使用root和alias,差别是使用root后,需要url中再多加个虚拟目录
location ^~ /img/ {
                alias /data/imgs/;
         }
当浏览器访问 http://127.0.0.1/img/1.png
使用alias 会直接映射 /data/code_img/1.png
使用root 会映射为 /data/code_img/img/1.png


静态文件只要如上面设置即可,但是php的文件需要做下面的处理
        location ~ ^/public/.+\.php$
        {
                root /data/www/web/public;
                rewrite /public/(.*\.php?) /$1 break;
...

阅读全文…
使用preg_match正则书写正确,但匹配不到的解决办法

以下建立在正则书写正确,且有匹配内容的前提下,有可能是preg_match对匹配的字符串有长度限制的问题

解决办法(任选一个):

1.在php.ini中加入(随便放到哪里):pcre.backtrack_limit=-1

2.ini_set(‘pcre.backtrack_limit', 999999999); (php 5.2.0版本之后可用)

另外pcre.recursion_limit是PCRE的递归限制,这个项如果设很大的值,会消耗所有进程的可用堆栈,最后导致PHP崩溃。

实际项目应用中,最好也对内存进行限定设置:ini_set(‘memory_limit', '64M');



https://blog.lmlyz.online/index/detail/id/64.html
可以获取的信息包括:文章html富文本,无图html文本,以及文章的基本信息:标题、作者、封面图片、公众号等信息。
      
      使用方式:
      
      $crawler = new WxCrawler();
      $content = $crawler->crawByUrl($url);
      
      content数组结构为:
      ```
      [
       [
       'date' => '',//发布日期
       'title'=> '',//标题
       'digest'=> '',//描述
       'content_url'=> '',//文章链接
       'cover'=> '',//文章封面链接
       'wechatname'=> '',//微信公众号名称
       ],
       'content_html' => '',
       'content_text' => '',
...

阅读全文…
p.s. 真的挺奇怪,这么常用的函数,关于类中使用网上居然很难找到有用相关资料,难道大伙都避免使用preg_replace_callback吗。有用的说明请看参考1.

下面举例说明,其中 next_year 为回调函数
function next_year($matches) { 
           // 通常:$matches[0] 是完整的匹配项,$matches[1] 是第一个括号中的子模式的匹配项, 以此类推
           return $matches[1].($matches[2]+1); 
  } 

php5.2和php5.3的类中都可以使用的标准方法:
preg_replace_callback(”|(d{2}/d{2}/)(d{4})|”,array( &$this, ‘next_year’), $str);
...

阅读全文…
p.s. 涉及伪静态参数中有网址或者中文的,需要进行2次urlencode,因为apache伪静态前会自动urldecode一次

配置Apache的伪静态,涉及到中文正则不能匹配,
匹配中文字符的正则表达式: [\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
也试了,也不能匹配。
尝试匹配所有字母数字加上% ([a-zA-Z0-9_%]+)
也没有成功,查到Apache执行url会自动进行一次urldecode,传的值会还原成中文的,也不能匹配。
后来想到,把值进行两次 urlencode ,取的时候再进行两次 urldecode 用([a-zA-Z0-9_%]+)
就可以匹配了。
p.s. win2003下fastcgi方式安装apache后也遇到些问题,做个记录。一般情况下可以依据apache和php的错误日志来做一些调整,看看修改的结果。

1、连接状态中 close_wait 太多的问题,apache服务器无响应
解决办法:
a、windows网卡防火墙的设置
windows防火墙中把80,443,apache放入例外,另外防火墙高级中选中http和https。

b、修改apache配置文件httpd.conf,加入下面语句
EnableMMAP off
EnableSendfile off
AcceptFilter http none
AcceptFilter https none
Win32DisableAcceptEx


2、并发连接数太多,导致服务器无响应
...

阅读全文…
本文实例总结了PHP中Header使用的HTTP协议及常用方法。分享给大家供大家参考。具体方法如下:
<?PHP
function https($num) {
$http = array (
100 => "HTTP/1.1 100 Continue",
101 => "HTTP/1.1 101 Switching Protocols",
200 => "HTTP/1.1 200 OK",
201 => "HTTP/1.1 201 Created",
202 => "HTTP/1.1 202 Accepted",
203 => "HTTP/1.1 203 Non-Authoritative Information",
204 => "HTTP/1.1 204 No Content",
205 => "HTTP/1.1 205 Reset Content",
...

阅读全文…

tcp链接的几种状态&tcpdump抓包

[ 2020-06-03 16:53:23 | 作者: admin ]
转自:https://www.iteye.com/blog/agapple-806518


说明: 通常情况下:一个正常的TCP连接,都会有三个阶段:1、TCP三次握手;2、数据传送;3、TCP四次挥手

里面的几个概念:

SYN: (同步序列编号,Synchronize Sequence Numbers)
ACK: (确认编号,Acknowledgement Number)
FIN: (结束标志,FINish)
TCP三次握手(创建 OPEN)
客户端发起一个和服务创建TCP链接的请求,这里是SYN(J)
服务端接受到客户端的创建请求后,返回两个信息: SYN(K) + ACK(J+1)
客户端在接受到服务端的ACK信息校验成功后(J与J+1),返回一个信息:ACK(K+1)
服务端这时接受到客户端的ACK信息校验成功后(K与K+1),不再返回信息,后面进入数据通讯阶段
数据通讯
...

阅读全文…