使用winrar将debug/release下文件打包成一个可直接运行exe文件

最新想把我的虚拟币交易网站做一个桌面应用程序,但是本人只会PHP,所以就想看看有没有什么简单的方法可以做。

  1. 选择debug/release下所有文件,鼠标右键“添加到压缩文件…”
  2. 常规->压缩选项->创建自解压格式压缩文件,可将默认文件名重命名
  3. 高级->自解压选项

3.1 设置->提取后运行程序(填写exe文件名) 
3.2 模式->勾选解包到临时文件夹 
3.3 模式->安静模式->全部隐藏 
3.4 更新->更新方式->解压并更新文件 
3.5 更新->覆盖方式->覆盖所有文件 
3.6 文本和图标,可选

参考:https://blog.csdn.net/harvic880925/article/details/27675073

linux磁盘空间用满的处理方法

磁盘空间不足会出现各种情况:
重启php-fpm报错:

unable to bind listening socket for address '127.0.0.1:9000': Address already in use (98) 

linux下空间满可能有两种情况

可以通过命令
df -h  查看磁盘空间占用,实际上是查看磁盘块占用的文件(block)
df -i  查看索引节点的占用(Inodes)

磁盘块和索引节点其中之一满,都会导致无法创建文件,提示磁盘空间已满。
所以请注意,查看磁盘还有空间,但是创建文件提示空间满,可能是inodes节点已满
通过命令:find / -size +100M |xargs ls -lh
列出系统内大于100M的文件
du -h –max-depth=1
查看当前目录内文件夹的大小
可以两种方式都测试下,有些时候,占用了大量空间的其实是系统日志或业务附件等小文件,
所以根据文件大小去查找不一定能查出正在占用硬盘空间的【目录】或文件,建议使用第二种


日志文件较大
web访问日志,建议做定时任务日志切割,以天为单位做压缩备份(可以通过脚本实现),保留一定时间以备查看,有需要可以做日志分析。
以一键安装包的环境为例,/alidata/log/ 目录下是是日志文件,可以检查文件大小是否占满磁盘使用,通常,access目录下文件为访问日志,error为错误日志。如磁盘占慢,这些日志又不重要,那么可以做清空处理,方法1,可以rm 删除掉,2 echo”” >access.log 

大量小文件引起
由于业务需求,产生大量小文件,需要考虑新增加磁盘或者使用oss存储服务
http://help.aliyun.com/all/11108271.html?spm=5176.383377.1996834802.6.7hPoRe
可以根据以上的步骤进行排查,如果仍然无法解决,可以提交售后工单,服务器账号口令信息等,进行排查。

安装Nginx支持php-fpm

> yum install -y nginx
> vi /etc/nginx/conf.d/default.conf
server {
    listen 80;
    server_name 服务器的ip地址 localhost;

    location / {
        root /usr/share/nginx/html/;
        index index.php  index.html  index.htm;
    }

    location ~ \.php$ {
        root /usr/share/nginx/html/;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME        $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}
> systemctl restart nginx
> vi /usr/share/nginx/html/index.php
<?php
	echo phpinfo();
?php>

访问ip地址 出现phpinfo()的内容

🙂

安装PHP7.2

安装php7.2之前先卸载了5.4版本,可以看我的上一篇卸载PHP5.4

> yum install epel-release [安装所需的依赖]
> yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm [配置CentOS 7.0 yum源]
> yum install yum-utils
> yum-config-manager --enable remi-php72 [查看php72的扩展]
> yum update [更新yum源]
> yum search php72 | more [查看当前的yum中有哪些php扩展]
> yum search php72 | egrep 'fpm|gd|mysql|memcache' [匹配查看某种源的包名]
> yum install php72 [安装php72]
> yum install php72-php-fpm php72-php-gd php72-php-json php72-php-mbstring php72-php-mysqlnd php72-php-xml php72-php-xmlrpc php72-php-opcache [安装php的扩展]
> php72 --version [查看php的版本]
> php72 -m [查看php的扩展]
> ps aux | grep php-fpm [查看php-fpm的启动情况]
> systemctl restart php72-php-fpm.service [启动php-fpm的服务 重启:restart 停止:stop]
> systemctl enable php72-php-fpm.service [添加php为开启启动项]
> systemctl status php72-php-fpm.service [查看php-fpm的状态]

php7.2安装之后我再安装nginx ,可以看我的下一篇安装Nginx支持php-fpm

🙂

卸载PHP5.4

环境:CentOS7,PHP5.4

最近想安装PHP7.2,所以卸载原来的PHP5.4版本

因为安装的时候是用yum,所以也使用yum卸载

> yum remove php 
> php -v

但是还是会看到版本信息,所以必须强制删除, 使用下面命令查看全部php软件包

> rpm -qa|grep php 
//提示如下
php-pdo-5.1.6-27.el5_5.3
php-mysql-5.1.6-27.el5_5.3
php-xml-5.1.6-27.el5_5.3
php-cli-5.1.6-27.el5_5.3
php-common-5.1.6-27.el5_5.3
php-gd-5.1.6-27.el5_5.3

注意卸载要先卸载没有依赖的
pdo是mysql的依赖项;common是gd的依赖项;

> rpm -e php-common-5.4.16-46.el7.x86_64 

由于我先执行了rpm -e php-5.4.16-46.el7.x86_64
再执行rpm -e php-common-5.4.16-46.el7.x86_64
报错,信息如下:
warning: /etc/php.ini saved as /etc/php.ini.rpmsave

> hash -r  

再用

 > php -v 

就会发现没有版本信息提示了,成功卸载

🙂

令人困惑的strtotime

本文地址: http://www.laruence.com/2018/07/31/3207.html 转载请注明出处

经常会有人被strtotime结合-1 month, +1 month, next month的时候搞得很困惑, 然后就会觉得这个函数有点不那么靠谱, 动不动就出问题. 用的时候就会很慌…

这不, 刚刚就有人在微博上又问我:

"鸟哥,今天是2018-07-31 执行代码: "
> date("Y-m-d",strtotime("-1 month"))
"怎么输出是2018-07-01? "

好的吧, 虽然这个问题看起来很迷惑, 但从内部逻辑上来说呢, 其实是”对”的, 你先别着急哈, 让我慢慢讲:

我们来模拟下date内部的对于这种事情的处理逻辑:

1. 先做-1 month, 那么当前是07-31, 减去一以后就是06-31.

2. 再做日期规范化, 因为6月没有31号, 所以就好像2点60等于3点一样, 6月31就等于了7月1

是不是逻辑很”清晰”呢? 我们也可以手动验证第二个步骤, 比如:

> var_dump(date("Y-m-d", strtotime("2017-06-31"))); 
//输出2017-07-01

也就是说, 只要涉及到大小月的最后一天, 都可能会有这个迷惑, 我们也可以很轻松的验证类似的其他月份, 印证这个结论:

 
> var_dump(date("Y-m-d", strtotime("-1 month", strtotime("2017-03-31"))));
//输出2017-03-03
> var_dump(date("Y-m-d", strtotime("+1 month", strtotime("2017-08-31"))));
//输出2017-10-01
> var_dump(date("Y-m-d", strtotime("next month", strtotime("2017-01-31"))));
//输出2017-03-03
> var_dump(date("Y-m-d", strtotime("last month", strtotime("2017-03-31"))));
//输出2017-03-03

那怎么办呢?

从PHP5.3开始呢, date新增了一系列修正短语, 来明确这个问题, 那就是”first day of” 和 “last day of”, 也就是你可以限定好不要让date自动”规范化”:

 
> var_dump(date("Y-m-d", strtotime("last day of -1 month", strtotime("2017-03-31"))));
//输出2017-02-28
> var_dump(date("Y-m-d", strtotime("first day of +1 month", strtotime("2017-08-31"))));
//输出2017-09-01
> var_dump(date("Y-m-d", strtotime("first day of next month", strtotime("2017-01-31"))));
//输出2017-02-01
> var_dump(date("Y-m-d", strtotime("last day of last month", strtotime("2017-03-31"))));
//输出2017-02-28

那如果是5.3之前的版本(还有人用么?), 你可以使用mktime之类的, 把所有的日子忽略掉, 比如都限定为每月1号就可以了, 只不过就不如直接用first day来的更加优雅.

现在, 搞清楚了内部原理, 是不是就不慌了? 

🙂