Siam博客

JS的字符串插值,变量长文本换行

前端

苦逼的PHPer要写前端

作为一个PHPer,经常需要在html中写js jq来解析数据,形成列表、选项等等。 (谁让我们PHPer还要兼顾页面呢?? 又不会Vue,只能这样子讨讨生活。) 那么就经常遇到Html代码拼接,或者字符串拼接,可能是这样子的问题

let html = "";

for(...){
    html += "<li> " + data.name + "</li>";
}

这种还是简单的,只有一个li,如果是2层、3层的div嵌套,那么这里就会是一团糟糕 有没有优雅一点的写法呢,比如php中的

Read more

php定期拉取数据对比

PHP

写在前面

今天在网上看帖子提问的时候,看到有人发表了一个提问

php下载远程的批量文件,每天一次,对比昨天和今天的文件,将旧文件替换成新文件

我们通过这个问题来分析讲解一下其中的知识点。 首先要解决的问题是:如何让程序每天自动执行一次脚本

Read more

VMware Workstation客户端 Centos系统 中文乱码 UTF-8字符无法正常显示

杂谈
问题由来 发生该问题的时间比较长了,之前没有第一时间整理记录。依稀记得是因为系统重装之后,Vmware软件重新安装,然后导入以前的虚拟机配置文件,就出现了中文乱码的问题。 从百度上查到的各种资料,都是说语言包和配置的问题,需要重新安装、修改配置等等步骤,下面将记录我的尝试步骤和解决问题的方案 ...
Read more

MD5在PHP中使用的注意事项

PHP
回顾知识 在之前的文章中,已经介绍过MD5的基础知识,以及特殊密码不符加密结果判断相等的情况 可以回顾一下该文章:历史文章 MD5介绍 由于PHP==判断时优先转换数字的坑 这就是上一篇文章说到的问题的原因:“0e830400451993494058024219903391” == “0e8 ...
Read more

md5加密介绍以及php中md5的漏洞

计算机基础 PHP
什么是MD5 md5是一种密码散列函数,也叫密码散列算法。 密码散列函数是一种单向散列函数,它可以将给定的数据提取出信息摘要,也就是给定数据的指纹信息。结果的摘要信息格式是一致的,通常用一个短的随机字母和数字组成的字符串来代表。 密码散列函数的特点 对于任何一个给定的消息,它都很容易就能运 ...
Read more

php计算两个日期之间的间隔,避免导出大量数据

PHP
写在前面 在做系统业务功能的时候,有的时候业务人员会进行超大范围地导出excel表格,导致内存、CPU占用飙升。 这对于系统的平滑运行不太友好,应该进行导出任务排队、限制范围等操作来控制频率、资源使用率。 探索 导出任务排队 这里讲讲实现思路: 前端请求服务端接口,告诉它要导出的日期范围、 ...
Read more

Nginx重试机制,浏览器重复请求两次多次

架构
前言 在研究nginx的时候,偶然看到网上前辈一篇解决问题的实战记录文章,稍微整理一下,学习补充一下知识点。 场景还原 问题 用户再浏览器里执行了一次http请求,结果后端服务器执行了两遍,如果这次请求是Insert操作,可想而知,数据库会多出一条一模一样的记录来。 网关用Nginx做了反 ...
Read more

【常见问题】宝塔面板如何安装最新版本的php扩展swoole

SWOOLE

写在前面

大家都知道,宝塔是一个面向小白的服务器运维面板,内置了非常丰富的问题。 我们可以快速安装各个版本的语言、软件、扩展等等 当笔者在使用过程中,学习php先进的技术swoole,swoole比较有名的easyswoole框架时,需要比较新的swoole版本。 而通过宝塔自动安装的是稍微旧一点的版本,那么如何安装自定义版本、最新版本呢?

编译安装swoole

其他php扩展其实也是一样的原理, 我们可以自行编译。 在另一篇文章中,我有比较详细的编译安装过程,可以参考一下。 宝塔面板多PHP版本编译安装swoole

总结

宝塔面板能提高我们非运维专业人员的管理效率,但是也会损失一些灵活性,要根据需求灵活使用工具。

Read more

Mysql误删,恢复数据,binlog闪回,宝塔面板

数据库
写在前面 DBA或开发人员,有时会误删或者误更新数据 你是否有删库经历?删库是否真的无解 如果是线上环境并且影响较大,就需要能快速回滚。 传统恢复方法是利用备份重搭实例,再应用去除错误sql后的binlog来恢复数据。 此法费时费力,甚至需要停机维护,并不适合快速回滚。 也有团队利用LVM快 ...
Read more

【源码解读】TP5return json_encode ajax自动被加上双引号

PHP

事情起因

在thinkphp5中,return数据才是控制器正确的时候方式,而不是直接echo 然后die 或者exti 因为框架有后置数据的落地处理等等,直接让程序退出并不友好,既然我们选择了框架,就应该遵循框架的设计理念 这样子能让我们避免一些坑爹事件的发生。 此次我在控制器中,并没有使用tp的Json Response对象,而是想通过return json_encode($arr);返回字符串的形式 正常应该输出如下

{"name":"siam", "age":21}

结果却输出为

"{"name":"siam", "age":21}"

这样子就明显乱套了,前端解析直接崩溃。

控制器原理

追寻response后框架的处理,框架会根据控制器return的数据类型做不同的处理

  • 返回Reponse子类,比如Json、Jsonp、Xml、View、重定向等等,则会执行子类的run()
  • 返回不是Reponse子类,则会自动识别响应输出类型
Read more
上一页 下一页