Laravel Eloquent 事件详细讲解

这篇文章为大家总结一下 LaravelEloquent模型的事件和具体在什么样的情况下触发事件。

Eloquent事件有:

retrievedcreatingcreatedupdatingupdatedsavingsaveddeletingdaleted

可事件有这么多,那这些事件具体在什么时候才能触发呢?

众多事件触发条件

1.retrieved:当数据库中检索现有模型时会触发该事件。

2.creating:当创建新模型时候,会触发该事件。备注:在创建前调用该方法
3.created:当创建新模型时候,会触发该事件。备注:在创建后调用该方法
4.updating:当模型已经存在数据库中时,并调用了save方法,则会调用该事件。备注:updating在保存前调用
5.updated:当模型已经存在数据库中时,并调用了save方法,则会调用该事件。备注:updating在保存后调用
6.saving:当更新或者创建模型时,会调用该事件。备注:在更新或者创建之前调用该方法
7.saved:当更新或者创建模型时,会调用该事件。备注:在更新或者创建之后调用该方法
8.deleting:当删除模式时,会调用该方法。备注:在删除之前调用
9.deleted:当删除模式时,会调用该方法。备注:在删除之后调用

谢谢大家!希望您喜欢!^_^

原文地址: 睿懿

Nginx 负载均衡实战

有时候,为了提高程序负载、增加服务器处理能力,就需要负载均衡技术。该技术主要是把用户请求分发到不同的服务器上去处理,这样做有效的解决单台服务器处理慢,和单机故障问题,真是一举多得的办法。

nginx 实现负载均衡要依赖一个upstream模块和proxy_pass反向代理指令,这个模块通过一些简单的调度算法来实现请求分发从而达到负载均衡策略。下面看nginx.conf文件怎么

nginx负载均衡模块默认支持4种算法:

  1. 轮询:这是upstream模块默认支持的算法,该算法有几个附加属性 ① weight轮询权值 ② backup 备份服务器。
  2. ip_hash:这是按请求ip使用hash结果进行分配,如果采用这种算法有效解决了session问题。
  3. fair:这个是最智能的算法。因为该算法是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。
  4. url_hash:这个算法和ip_hash类似,不同的是hash请求地址url的结果来分配请求。

使用轮询算法

upstream test{
    server 127.0.0.1:91 weight=1;  #weight 权值。值越大分配到的访问几率越高
    server 127.0.0.1:92 weight=2;
    server 127.0.0.1:93 backup;
}
server {
    listen 85 ;
    index index.php  index.html index.htm;
    location / {
        proxy_pass http://test;
    }
}

使用ip_hash算法

upstream test{
    ip_hash;
    server 127.0.0.1:91;
    server 127.0.0.1:92;
    #server 127.0.0.1:93 backup; 使用ip_hash算法时,不能使用backup状态
}
server {
    listen 85 ;
    index index.php  index.html index.htm;
    location / {
        proxy_pass http://test;
    }
}

其余两个算法需要额外的第三方模块支持,所以在这就不做演示啦,不过配置都是一样的。引入指令即可。

自定义 Session 数据保存

当项目访问量大的时候,我们就不能采取php默认session存储方式了(php默认为文件存储),这个时候我们就要自己实现session数据存储。好在php提供了重写session数据的接口给我们。下面就是简单的用mysql存储session数据案例。

<?php
/**
 * @Author: Aaron
 * @Last Modified by:   Aaron
 */

简单总结:nginx 的 rewrite 指令

NGINX REWRITE 指令:

语法:

rewrite regex replacement [flag];

作用:

如果一个 uri 匹配指定的正则表达式 regex , uri 就按照 replacement 重写。 rewrite 按配置文件中出现的顺序执行。 flags 标志位的作用是对接下来相同rewrite指令该如何处理。如果 replacementhttp://https:// 开始,将不再继续处理,这个重定向将返回给客户端。

flag(参数)

  • last:停止处理后续 rewrite 指令集,然后对当前重写的新 urirewrite 指令集上重新查找。
  • break: 停止处理后续 rewrite 指令集,并不在重新查找,但是当前 location 内剩余非 rewrite 语句和 location 外的非 rewrite 语句可以执行。
  • redirect: 如果 replacement 不是以 http://https:// 开始,返回 302 临时重定向。
  • permant : 返回 301 永久重定向。

执行顺序:

1.首先执行 server 快的 rewrite 的指令. (这里的 server 块指的是,大括号包围的区域)
2.执行选定的 location 中的 rewrite 指令.

注意:如果 `rewrite` 循环超过10次,则返回 500 Internal Server Error 错误。