即时通讯思路整理

  1. 离线内容发送
    1.1 判断对方是否在线:增加online字段,通过心跳解决(是否可行待实现)。
    1.2 如果对方在线,则直接发送。
    1.3 如果对方不在线,则先把消息记录存在数据库(加个标识,未发送)。在服务器写一个定时任务CronTab,当用户上线,则读取他的未读消息。
  2. websocket加密
    待研究

php配置文件问题 php.ini

由于做爬虫,经常会使用到php命令行模式。今天在操作命令行的时候,涉及到redis的使用,一直在报错class Redis not found。
但是在web端执行代码,redis是没问题的。

查了一下,web端和命令行端调用的配置文件有时是不一样的,可这样查看:

web phpinfo()
commond line: php -i

可以查看到命令行php.ini的路径

Configuration File (php.ini) Path => /usr/local/php/lib
Loaded Configuration File => /usr/local/php/lib/php.ini

在此文件加入redis的扩展即可。

mysql 空与null

mysql中判断”,和null只需要用 = ” 和is null就可以了。

有一个需求,需要统计一行数据字段中缺少的个数,使用到的算法如下:

SELECT if (street_name <> '',1,0) + if (address <> '',1,0) + if (subway_display <> '',1,0) + if (subway_station_id <> '',1,0) + if (subway_station_name <> '',1,0) as rs from table;

这里举个例子,主要是用if来判断字段是否为空,然后计数。
但是数据中有空值、有null,有0,这些我们都看作是空数据,肯定就不能用 = ”和 is null来判断了。逆向思维,用<> ”,则空值、null、0都满足要求啦

维护幻想游戏一周年

记得搭建博客的时候,想的是在上面记录一下心情,毕竟有些东西不好在朋友圈、微博发。但翻了翻,好像整站都是一些技术文章,该丰富一点啦。

不得不感叹,事情上有太多的机缘巧合。我维护幻想游戏,就是一个非常巧的巧合。可能也是和我容易焦虑的性格离不开,大三的时候我就下载了Boss直聘,每天在上面浏览工作,意外的结识了幻想游戏网站长,走上了维护幻想游戏的道路。

我们最好的遇见,是现在这样的十月。

正式开始维护幻想游戏是在一年前,国庆假期刚过。那时已经是找工作的旺季,不停的有宣讲会、招聘信息。还记得那时非常焦虑,非常容易陷入一种自我怀疑、自我否定的状态,由于是转行,没有人可以作为横向对比去参照。那时的我,每天大部分时间都扑在幻想游戏上面,那时幻想游戏还是个纯粹的下载网站,几乎没有额外的功能。我就全身心的研究框架、实现功能,慢慢的,评论、收藏、后台都完善了。我的简历也从空空如也,变得丰满起来。

如果说从幻想游戏中获得最大的收获,应该就是不停的有用户对我们进行反馈和支持吧。可能外人很难理解,这份支持和反馈对于开发者的意义。那时也没有盈利,还被外行说没有技术含量(哈哈,耿耿于怀),每天还是乐呵呵的为开发、维护,每天晚上在粉丝群和大家聊得热火朝天。那几个月,算是大学生涯比较难忘的时光了。

一年了,看着幻想游戏一步一步走向正轨,心里的成就感溢于言表。

【MySQL】字符串截取之substring_index(按给定字符截取)

substring_index(str,delim,count)

  str:要处理的字符串

  delim:分隔符

  count:计数

例子:str=www.wikibt.com

  substring_index(str,'.',1)

  结果是:www

  substring_index(str,'.',2)

  结果是:www.wikibt

  也就是说,如果count是正数,那么就是从左往右数,第N个分隔符的左边的全部内容

  相反,如果是负数,那么就是从右边开始数,第N个分隔符右边的所有内容,如:

  substring_index(str,'.',-2)

  结果为:wikibt.com

 有人会问,如果我要中间的的wikibt怎么办?

 很简单的,两个方向:

  从右数第二个分隔符的右边全部,再从左数的第一个分隔符的左边:

  substring_index(substring_index(str,'.',-2),'.',1);

PHP常用数组

  1. 数组交集、差集:PHP中文网
  2. 反转key、value:array_flip()
    3.从一个数组中取出另一个数组的键值重复项:array_diff()
    4.array_unshift() ——用于向数组插入新元素。新数组的值将被插入到数组的开头。

    $a=array("a"=>"red","b"=>"green");
    array_unshift($a,"blue");
    print_r($a);
    
    Array ( [0] => blue [a] => red [b] => green )

postman 常见使用tips

1.测试https环境下接口

如下图所示,关闭ssl验证即可。

2.测试含session的接口

2.1找到session值

2.2在postman添加session值

把对应的session值放入,保存即可

3.模拟ajax请求

 1)提交模式:POST

 2)Headers增加参数:
 Content-Type    为:application/x-www-form-urlencoded
 X-Requested-With 为:xmlhttprequest

 3)Body选择为:x-www-form-urlencoded,参数为模拟AJAX提交的内容

wamp 配置https环境

生成证书步骤

主要看一下C:/wamp64/bin/apache/apache2.4.37/conf/extra下的http-ssl.conf与httpd-vhosts.conf文件的配置

http-ssl.conf:

<VirtualHost _default_:443>
#   General setup for the virtual host
DocumentRoot "C:\wamp64\www\b2b\admin\img"
ServerName img.ygoffice.com:443
ServerAdmin admin@example.com
ErrorLog "${INSTALL_DIR}/bin/apache/apache2.4.37/logs/img_error.log"
TransferLog "${INSTALL_DIR}/bin/apache/apache2.4.37/logs/img_access.log"
SSLEngine on
SSLCertificateFile "${INSTALL_DIR}/bin/apache/apache2.4.37/conf/ssh/img/1535611_img.ygoffice.com_public.crt"
SSLCertificateKeyFile "${INSTALL_DIR}/bin/apache/apache2.4.37/conf/ssh/img/1535611_img.ygoffice.com.key"
SSLCertificateChainFile "${INSTALL_DIR}/bin/apache/apache2.4.37/conf/ssh/img/1535611_img.ygoffice.com_chain.crt"
<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>
<Directory "${INSTALL_DIR}/bin/apache/apache2.4.37/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>
<Directory "C:\wamp64\www\b2b\admin\img">
    AllowOverride All
    Require local
    Require all granted
</Directory>
BrowserMatch "MSIE [2-5]" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0
CustomLog "${INSTALL_DIR}/bin/apache/apache2.4.37/logs/img_ssl_request.log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>

http-ssl.conf下配置443端口(https),httpd-vhosts.conf配置80端口

<VirtualHost *:80>
  ServerName img.ygoffice.com
  ServerAlias img.ygoffice.com
  DocumentRoot "C:\wamp64\www\b2b\admin\img"
  #HTTP_TO_HTTPS_START
    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteCond %{SERVER_PORT} !^443$
        RewriteRule (.*) https://%{SERVER_NAME}$1 [L,R=301]
    </IfModule>
  #HTTP_TO_HTTPS_END
  <Directory "C:\wamp64\www\b2b\admin\img">
    Options +Indexes +Includes +FollowSymLinks +MultiViews
    AllowOverride All
    Require local
    Require all granted
  </Directory>
</VirtualHost>

当然还要配置一下hosts文件。

最后:在配置过程中,可能会遇到apache重启不了。在C:/wamp64/bin/apache/apache2.4.37/bin目录下执行命令:

httpd -t

即可查看报错信息