Submitted by akuma on 2019, January 28, 12:09 PM
后台删除评论的时候,一直出现了504超时,原本想着,这个破程序用了10多年了就不改了吧。但总感觉不舒服。。。所以就瞄了一眼。
毕竟程序我都改啊改的,支持了PHP7.3了。没必要为了点小事就。。。
看了下代码,原来。在处理评论的时候,不管是编辑、还是删除,原程序都遍历了所有的文章,并更新了所有文章的评论数。。好吧。可能是因为原作者也没想到我废话那么多,写了那么多的垃圾博客内容。。。。
于是我改成了。只要是删除评论,我就将对应的articleid读出来。然后,也只有删除操作的时候,才会更新涉及文章的评论数。
顺便再说一句,原来其实也没有这么卡的,也不会有504 错误的,为什么会出现呢?是因为我用了RDS,相当于这个操作。。。。连接了RDS 几千次。。直接就给弄崩了,原来数据库在本地的时候,几乎不受影响。。几千次又咋地?
换句话说。。。写代码还是要与时俱进啊。。。
Tags: sablog
PHP | 评论:0
| 阅读:9369
Submitted by akuma on 2019, January 25, 10:17 PM
先说为什么要处理
1、有朋友评论说,我这种frp+nginx是ssl代理方式,不能保证全站https,如果有schema检查的就有问题。
基于我大部分项目都是采用了Yii的Url::to()方法,默认不加schema。如果加了schema,他是自己读当前的URL的。所以自己开发的内容可以无视,主要还是一些第三方库。比如部分字体,部分JS。有的JS中还createElement中引用的JS。但这个毕竟少数。现在用了Vue+PHP之后。都在尽量用一些可靠的代码(不行就用unpkg之类的,卡就卡点吧)
2、水月 说,打开博客后还是有问题。。
所以,检查了一下,说我有几个小问题
1、支持了SSLV1,建议我不要支持。于是删除了
2、最重要的是说。。。我的证书链有问题,于是重新生成证书链,然后OK(至少到现在还是正常的)【现在网上有专门生成证书链的工具,谷哥一下就OK了】
3、额外检查了一下,真的发现有个页面里有个之前的广告链接。还是http的,改掉。(然后发现很多友情链接,都是http的。这怎么破?我先强制改成https的了。。如果打不开,我也没办法)
现在应该是小锁了吧?哈哈
Linux | 评论:1
| 阅读:11926
Submitted by gouki on 2019, January 24, 1:38 PM
1、重签证书,原来的证书好象也有问题。
2、将页面里涉及到的http链接全部改成了https,几乎没有漏网之鱼了。
原来打开https://neatstudio.com的时候,chrome直接警告,现在终于是一个绿锁了。比较欣慰,果然,原来3~5分钟就能做的事,硬是拖了一年多。。。
Linux | 评论:1
| 阅读:11570
Submitted by gouki on 2019, January 24, 9:15 AM
1、component和include的区别是啥
如果你不用slot。。。那component和include真没啥区别,而且component还是块级调用。而include是行级(可以少写一个@endinclude,不是挺好?)
2、includeIf includeWhen include ....应该在什么时候调用
如果你有一堆逻辑判断但不知道怎么拆,或者说觉得放在一页里面比较烦,就用这些来进行简单的区分吧
比如你不知道模板是不是存在,就用includeIf(但这个逻辑很妖,你自己写的代码你不知道它存不存在?)
includeFirst,是指定多个模板,当一个不存在就用下一个。这个不是和includeIf一样?你自己写的你会不知道?
所以。感觉有用的也就includeWhen了。根据逻辑判断来调用相应的子模板
3、怎么扩展自己的方法?
不太建议,但如果真要扩展,现阶段已经很容易了,比如我在自己的Yii中就是这样:
XML/HTML代码
- $this->blade->getCompiler()
- ->directive('config', function($environment) {
- list($key, $defaultValue) = explode(",", $environment . ",", 2);
- $environment = trim($key, "\"'");
- return Configure::get($environment, $defaultValue != "," ? rtrim($defaultValue, ",") : null);
- });
然后在模板里的用法就是
a、@config(abc),获取Yii::$app->params['abc']
b、@config(abc.def) ,获取Yii::$app->params['abc']['def']
c、@config(abc,123),如果没有定义Yii::$app->params['abc'],就返回默认值123
4、如果想用blade模板自带的@csrf @method,得自己实现csrf_field , method_field方法(如果你不实现就直接用,会报这两个方法不存在D)
PHP | 评论:0
| 阅读:8986
Submitted by gouki on 2019, January 21, 10:14 PM
如题的组合。由于本地写代码,比较不方便搞成SSL,毕竟自签名证书现在大部分浏览器都不认了。而且现在微信开发(小程序)、APP等都只认SSL。所以才有了利用frp来进行SSL穿透。
步骤我说的简单一点。不详细 说了
如果不需要内网穿透,其实就是 nginx + acme.sh 就Over了,只是nginx需要配置一下(记得泛域名使用的是fullchain.cer,普通 的单域名是用的xxx.domain.cer)
如果需要内网穿透,步骤简要如下
1、frps -> 设置vhost_http_port(本次假定为8888) ,然后利用supervisor 管理frp (可以使得frp异常崩溃后能够重启)【或者使用systemd,各人喜欢】
2、设置nginx,server_name 为 *.app.neatstudio.com (以app.neatstudio.com为例),在proxy_pass中选择使用upstream,设置为刚才的vhost_http_port,例:
XML/HTML代码
- upstream app.neatstudio.com {
- server 127.0.0.1:8888;
- }
-
- server {
- listen 80;
- server_name *.app.neatstudio.com;
-
- listen 443 ssl;
- ssl on;
- ssl_certificate /etc/nginx/ssl/*.app.neatstudio.com.fullchain.cer;
- ssl_certificate_key /etc/nginx/ssl/*.app.neatstudio.com.key;
-
- ssl_session_cache shared:SSL:20m;
- ssl_session_timeout 10m;
-
- ssl_prefer_server_ciphers on;
- ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
- ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;
-
- # turn on the OCSP Stapling and verify
- ssl_stapling on;
- ssl_stapling_verify on;
- ssl_trusted_certificate /etc/nginx/ssl/*.app.neatstudio.com.fullchain.cer;
-
-
-
- add_header Strict-Transport-Security "max-age=31536000";
-
- location / {
- proxy_pass http://app.neatstudio.com;
- include /etc/nginx/proxy_params;
- }
- }
3、在本地(或者任意一台想有https的服务器上)安装frpc,设置subdomain就行了,例:
XML/HTML代码
- [test.app.ns.com]
- type=http
- port=80
- subdomain=test
这样就OK了。[]里的test.app.ns.com,为什么取这个名字?是因为。。。frp的客户端中的任意[]包含的TAG,都不能重名(切记)
然后一切Over(因为我使用mac+mamp,所以会更方便的管理域名)
Tags: frp, acme.sh, nginx, mamp
Linux | 评论:1
| 阅读:12716