Laravel Model常用属性


$table = ‘应当操作的表名’;
$primaryKey= ‘主键’;
$timestamps = false;//是否创建crearte_at与update_at字段
$fillable = [ ‘可批量填充的字段’];
$guarded= [ ‘不可批量填充的字段’];
$hidden = [ ‘模型转换为数组时应当隐藏的字段’];
$visable = [‘模型转换为数组时应当显示的字段’];
$appends = [ ‘模型转换为数组时应当追加的虚拟字段’ // 例如访问器];
$with = [ ‘应预加载的关联关系’,];
$attributes= [ ‘字段名’ => ‘字段默认值’];
$casts= [‘字段名’ => ‘数据类型转换的目标类型’];
$dates = [ ‘应当被转换为日期时间的字段’];
$touches = [ ‘模型更新时应当一并更新的关联关系’];
$dispatchesEvents = [ ‘模型事件’=>’自定义事件’(设置模型事件与自定义事件的映射)];

解决 Mac iTerm2 连接远程Linux LC_CTYPE 警告 (warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory)

MacStudio,远程工具是 iTerm2,在远程连接到服务(CentOS 7 系统)如下错误

warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory

网上搜了这个警告的解决办法,基本有 2 个。

1、解决办法 1(本人此方法解决)

在 Mac 终端编辑 ~/.zshrc 文件,在文件末添加两行代码:
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

重新连接问题解决。

2、解决办法 2 (网上的方法, 本人尝试未解决问题)

在 Mac 终端编辑 /etc/ssh/ssh_config,在最后一行找到 SendEnv LANG LC_*,注释掉这一行。

Windows下正确配置cwRsync,每次向Linux同步代码时,不需输入密码

(已发内部论坛,重新整理转贴出来)
使用Visual Studio或者Source Insight来写后台代码时,必然会遇到代码如何从windows下同步到Linux开发机中进行编译的问题。常用方法有两种,一种是在Linux下配置Samba;另一种是使用Rsync来同步。
Samba毕竟是映射的网络硬盘,读写速度自然没有本机快,我个人不太喜欢直接用VS在其中工作。
在Windows下安装cwRsync客户端后,将Rsync的同步脚本作为一个快捷键,添加到VS的菜单栏中(我用的是Alt+T+U),代码有修改,则能很快的同步到Linux开发机中,不过烦人的是,每次都需输入密码。
通过添加ssh密钥,并正确配置同步脚本,即可解决。步骤如下:

1. 生成密钥
在Windows命令行中,执行C:\Program Files\cwRsync\bin>ssh-keygen.exe -t rsa ,根据提示,输入密钥文件路径名称,比如 C:\devkey.接着提示passphrase,可以不设置,直接回车。密钥文件生成到指定的目录中,私钥和公钥分别是devkey和devkey.pub。
2. 添加公钥到Linux
   登录到Linux开发机,进入目录 ~/.ssh/ ,将公钥 devkey.pub添加至该目录,并执行:
   $ cat devkey.pub >> authorized_keys
   $ chmod 700 authorized_keys
   (备注:关于Linux开发机下Key格式的问题,后面介绍。要保持添加的公钥同主机使用的SSH key格式一直,否则会失效)
3. 修改Windows同步脚本
   使用set命令设置HOME路径,并在ssh命令中使用-i参数指定刚才生成的私钥devkey。(根据个人需要设置同步目录)
   Windows批处理脚本示例:
REM ————BEGIN————
cd C:\Program Files\cwRsync\bin
c:
SETLOCAL
SET CWRSYNCHOME=%PROGRAMFILES%\cwRsync\bin
SET HOME=%HOMEDRIVE%%HOMEPATH%
rsync –perms –chmod a+rwx -avz –progress –exclude=”*svn*” –exclude=”project” -e “ssh -p 22 -l neilwu -i /cygdrive/c/devkey ” — “/cygdrive/e/test/” [email protected]:/data/home/neilwu/test/
pause
REM ————END————–

4. 运行同步脚本

P.S. 
1. 必须使用SET命令设置HOME路径,否则会有提示“Could not create directory  ‘/home/neilwu/.ssh’”。cwrsync的示例脚本里已经有说明:Set HOME variable to your windows home directory. That makes sure that ssh command creates known_hosts in a directory you have access. 因为cwRsync使用的是cygwin的库,只是从cygwin中抽取了这几个命令出来,ssh命令在执行时需要记录Host公钥信息,也可以使用选项UserKnownHostsFile 来指定known_hosts文件路径,不过Windows下新建一个名称中有”.”的文件夹要在CMD中用命令”mkdir .ssh”。
2. ssh可以指定选项 -o StrictHostKeyChecking=no,来禁用远程主机的公钥检查。不过如果key不变时,只在首次有用。
3. 建议脚本执行完后,最后用pause命令暂停,可以检查一下本次同步的文件
4. 关于Key
cwRsync使用的是OpenSSH,刚才产生的devpub.key格式如下:
ssh-rsa AAAAB3Nza…
要确认Key格式的话,在你的Linux开发机上生成一对Key即可。运行ssh-keygen -t rsa,例如,我的公钥是:
—- BEGIN SSH2 PUBLIC KEY —-
Comment: “2048-bit RSA, converted from OpenSSH by neil”
AAAAB3NzaC1yc2EAAAABIwAA…
可以看到是2048位的Key,而且pubkey是SSH2格式的。
所以要对刚才Windows下生成的进行格式转换:ssh-keygen -ef devkey.pub > newdevkey.pub,然后用newdevkey.pub添加到Linux开发机的~/.ssh2/目录下,
同时,echo “Key newdevkey.pub” >> ~/.ssh2/authorization

5. 参考资料
Manpage of SSH,rsync
http://everythinglinux.org/rsync/
https://blogs.oracle.com/jkini/entry/how_to_scp_scp_and
———————
作者:yubaibai1111
来源:CSDN
原文:https://blog.csdn.net/butterflydog/article/details/7464966
版权声明:本文为博主原创文章,转载请附上博文链接!

初始化mysql数据库提示缺少Data:dumper模块解决方法

初始化mysql数据库时出现下面错误,原因是缺少Data:dumper模块

[root@localhost 5.6.42]# ./scripts/mysql_install_db --user=mysql
FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:
Data::Dumper

解决方法 :安装autoconf库
命令:yum -y install autoconf //此包安装时会安装Data:Dumper模块

安装完autoconf库,再运行./scripts/mysql_install_db –user=mysql,问题消失!!!

mysql启动报错:Starting MySQL… ERROR! The server quit without updating PID file

mysql启动时报错:Starting MySQL… ERROR! The server quit without updating PID file (/opt/mysql/data/mysql.pid) 的解决方法:

1、可能是/opt/mysql/data/数据目录mysql用户没有权限(修改数据目录的权限)

解决方法 :给予权限,执行 “chown -R mysql.mysql /opt/mysql/data” 然后重新启动mysqld

2、可能进程里已经存在mysql进程

解决方法:用命令“ps -ef|grep mysqld”查看是否有mysqld进程,如果有使用“kill -9 进程号”杀死,然后重新启动mysqld!

3、可能是第二次在机器上安装mysql,有残余数据影响了服务的启动。

解决方法:去mysql的二进制日志目录看看,如果存在mysql-binlog.index,就赶快把它删除掉吧

4、mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]下有没有指定数据目录(datadir)。

解决方法:请在[mysqld]下设置这一行:datadir = /opt/mysql/data

5、skip-federated字段问题

解决方法:检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。

6、错误日志目录不存在

解决方法:使用“chown” “chmod”命令赋予mysql所有者及权限

7、selinux惹的祸,如果是centos系统,默认会开启selinux

解决方法:先临时改为警告模式:[root@www php]# setenforce 0

然后打开/etc/sysconfig/selinux,把SELINUX=enforcing改为SELINUX=disabled

附加:

经验之谈:

还有一个原因可能是:

查看配置文件/usr/local/mysql/my.cnf里有没有innodb_buffer_pool_size这个参数

innodb_buffer_pool_size:主要作用是缓存innodb表的索引,数据,插入数据时的缓冲;

默认值:128M;

专用mysql服务器设置此值的大小: 系统内存的70%-80%最佳。

如果你的系统内存不大,查看这个参数,把它的值设置小一点吧
总结:

在配置文件/etc/my.cnf添加错误日志参数,一切问题都解决

[mysqld_safe]
log-error = /data/mysql/logs/error.log
启动报错时查看日志信息:
#tail -f /data/mysql/logs/error.log

1 160721 06:12:07 mysqld_safe Starting mysqld daemon with databases from /data/mysql/data
2 2018-05-21 06:12:10 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
3 2018-05-21 06:12:10 0 [Note] /opt/mysql/bin/mysqld (mysqld 5.6.27-log) starting as process 2290 ...
4 2018-05-21 06:12:10 2290 [Note] Plugin 'FEDERATED' is disabled.
5 2018-05-21 06:12:10 2290 [Warning] The option innodb (skip-innodb) is deprecated and will be removed in a future release
6 2018-05-21 06:12:10 2290 [Note] InnoDB: Using atomics to ref count buffer pool pages
7 2018-05-21 06:12:10 2290 [Note] InnoDB: The InnoDB memory heap is disabled
8 2018-05-21 06:12:10 2290 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
9 2018-05-21 06:12:10 2290 [Note] InnoDB: Memory barrier is not used
10 2018-05-21 06:12:10 2290 [Note] InnoDB: Compressed tables use zlib 1.2.3
11 2018-05-21 06:12:10 2290 [Note] InnoDB: Using CPU crc32 instructions
12 2018-05-21 06:12:10 2290 [Note] InnoDB: Initializing buffer pool, size = 128.0M
13 2018-05-21 06:12:10 2290 [Note] InnoDB: Completed initialization of buffer pool
14 2018-05-21 06:12:10 2290 [Note] InnoDB: Highest supported file format is Barracuda.
15 2018-05-21 06:12:11 2290 [Note] InnoDB: 128 rollback segment(s) are active.
16 2018-05-21 06:12:11 2290 [Note] InnoDB: Waiting for purge to start
17 2018-05-21 06:12:11 2290 [Note] InnoDB: 5.6.27 started; log sequence number 1625997
18 2018-05-21 06:12:11 2290 [ERROR] /opt/mysql/bin/mysqld: unknown option '--slave_parallel_workers=3'
19 2018-05-21 06:12:11 2290 [ERROR] Aborting
20 2018-05-21 06:12:11 2290 [Note] Binlog end
21 2018-05-21 06:12:11 2290 [Note] Shutting down plugin 'partition'
22 2018-05-21 06:12:11 2290 [Note] Shutting down plugin 'INNODB_SYS_DATAFILES'
23 2018-05-21 06:12:11 2290 [Note] Shutting down plugin 'INNODB_SYS_TABLESPACES'
24 2018-05-21 06:12:11 2290 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN_COLS'
25 2018-05-21 06:12:11 2290 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN'
26 2018-05-21 06:12:11 2290 [Note] Shutting down plugin 'INNODB_SYS_FIELDS'

发现日志输出
1 2018-07-21 06:12:11 2290 [ERROR] /opt/mysql/bin/mysqld: unknown option '--slave_parallel_workers=3'
2 2018-07-21 06:12:11 2290 [ERROR] Aborting

肯定是配置文件里加入了这个错误参数,去掉即可

新加报错:

Starting MySQL.171019 10:11:54 mysqld_safe error: log-error set to ‘/data/tools/mysql/logs/error.log’, however file don’t exists. Create writable for user ‘mysql’.

这是在mysql新版本:5.6.35,5.6.36的一个bug

参考:https://bugs.mysql.com/bug.php?id=84427
解决:

手动创建日志文件:

touch /data/tools/mysql/logs/error.log

chown mysql. /data/tools/mysql/logs/error.log

/etc/init.d/mysqld start

解决Win10默认占用80端口

方案1:
以管理员身份运行cmd;输入net stop http;如果提示是否真的需要停止这些服务,则选择“Y”;完成后输入:sc config http start=disabled
方案2:
Ctrl+x,然后选择“计算机管理”,展开“服务和应用程序”,找到“服务”;找到“World Wide Web Publishing Service”,双击打开后,将启动类型改为手动,更改服务状态为“停止”;如果80端口仍然被占用,则还需要停止以下几个服务:“SSDP Discovery”“Print Spooler”“HomeGroup Provider”“Function Discovery Resource Publication”“Function Discovery Provider Host
方案3:
以管理员身份运行regedit打开键值:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP在右边找到Start这一项,将其改为0重启系统,System进程不会占用80端口

浏览器 cookie 限制

一、浏览器允许每个域名所包含的 cookie 数:

Microsoft 指出 Internet Explorer 8 增加 cookie 限制为每个域名 50 个,但 IE7 似乎也允许每个域名 50 个 cookie(《Update to Internet Explorer’s Cookie Jar》)。
Firefox 每个域名 cookie 限制为 50 个。
Opera 每个域名 cookie 限制为 30 个。
Safari/WebKit 貌似没有 cookie 限制。但是如果 cookie 很多,则会使 header 大小超过服务器的处理的限制,会导致错误发生。

注:“每个域名 cookie 限制为 20 个”将不再正确!

二、当很多的 cookie 被设置,浏览器如何去响应。除 Safari(可以设置全部cookie,不管数量多少),有两个方法:

最少最近使用(least recently used (LRU))的方法:当 Cookie 已达到限额,自动踢除最老的 Cookie ,以使给最新的 Cookie 一些空间。 Internet Explorer 和 Opera 使用此方法。
Firefox 很独特:虽然最后的设置的 Cookie 始终保留,但似乎随机决定哪些 cookie 被保留。似乎没有任何计划(建议:在 Firefox 中不要超过 Cookie 限制)。

三、不同浏览器间 cookie 总大小也不同:

Firefox 和 Safari 允许 cookie 多达 4097 个字节, 包括名(name)、值(value)和等号。
Opera 允许 cookie 多达 4096 个字节, 包括:名(name)、值(value)和等号。
Internet Explorer 允许 cookie 多达 4095 个字节, 包括:名(name)、值(value)和等号。

注:多字节字符计算为两个字节。在所有浏览器中,任何 cookie 大小超过限制都被忽略,且永远不会被设置。

节选自:《Browser cookie restrictions》

Linux 禁止root远程登录

修改/etc/ssh/sshd_config

PermitRootLogin no

重启ssh:service sshd restart

ok,可以使用su root切换至root用户权限

Redis安装配置

http://bbs.linuxtone.org/thread-7129-1-1.html

Redis介绍

Redis本质上一个Key/Value数据库,与Memcached类似的NoSQL型数据库,但是他的数据可以持久化的保存在磁盘上,解决了服 务重启后数据不丢失的问题,他的值可以是string(字符串)、list(列表)、sets(集合)或者是ordered   sets(被排序的集 合),所有的数据类型都具有push/pop、add/remove、执行服务端的并集、交集、两个sets集中的差别等等操作,这些操作都是具有原子性 的,Redis还支持各种不同的排序能力
Redis 2.0更是增加了很多新特性,如:提升了性能、增加了新的数据类型、更少的利用内存(AOF和VM)
Redis支持绝大部分主流的开发语言,如:C、Java、C#、PHP、Perl、Python、Lua、Erlang、Ruby等等

Redis性能:
根据Redis官方的测试结果:在50个并发的情况下请求10w次,写的速度是110000次/s,读的速度是81000次/s
测试环境:
1.        50个并发,请求100000次
2.        读和写大小为256bytes的字符串
3.        Linux2.6 Xeon X3320 2.5GHz的服务器上
4.        通过本机的loopback interface接口上执行
地址:http://code.google.com/p/redis/wiki/Benchmarks

Redis的功能:
1、Redis的Sharding:Redis支持客户端的Sharding功能,通过一致性hash算法实现,当前Redis不支持故障冗余,在集群中不能在线增加或删除Redis
2、Redis的master/slave复制:
1.        一个master支持多个slave
2.        Slave可以接受其他slave的连接来替代他连接master
3.        复制在master是非阻塞的,而在slave是阻塞的
4.        复制被利用来提供可扩展性,在slave端只提供查询功能及数据的冗余
3、Redis的Virtual Memory功能:vm是Redis2.0新增的一个非常稳定和可靠的功能,
vm的引入是为了提高Redis的性能,也就是把很少使用的value保存到disk,而key保存在内存中。实际上就是如果你有10w的keys在内存 中,而只有仅仅10%左右的key经常使用,那么Redis可以通过开启VM尝试将不经常使用的Value转换到disk上保存
4、Redis的附加档案(AOF)功能:Redis通过配置的策略将数据集保存到aof中,当Redis挂掉后能够通过aof恢复到挂掉前的状态

Redis的安装及配置:
下载Redis:wget http://redis.googlecode.com/files/redis-2.0.0-rc4.tar.gz

[[email protected]   ~/src]$ tar xvzf redis-2.0.0-rc4.tar.gz
[[email protected]   ~/src]$ cd   redis-2.0.0-rc4
[[email protected]   ~/src/redis-2.0.0-rc4]$ make
[[email protected]   ~/src/redis-2.0.0-rc4]$ mkdir ~/redis-2.0.0
[[email protected]   ~/src/redis-2.0.0-rc4]$cp redis-server   ~/redis-2.0.0
[[email protected]   ~/src/redis-2.0.0-rc4]$cp redis-benchmark   ~/redis-2.0.0
[[email protected]   ~/src/redis-2.0.0-rc4]$cp redis-cli   ~/redis-2.0.0
[[email protected]   ~/src/redis-2.0.0-rc4]$cp redis.conf   ~/redis-2.0.0
[[email protected]   ~/src/redis-2.0.0-rc4]$ cd ~/redis-2.0.0/

复制代码

配置redis.conf配置文件:

#是否作为守护进程运行
daemonize yes
#配置pid的存放路径及文件名,默认为当前路径下
pidfile redis.pid
#Redis默认监听端口
port 6379
#客户端闲置多少秒后,断开连接
timeout 300
#日志显示级别
loglevel verbose
#指定日志输出的文件名,也可指定到标准输出端口
logfile stdout
#设置数据库的数量,默认连接的数据库是0,可以通过select N来连接不同的数据库
databases 16
#保存数据到disk的策略
#当有一条Keys数据被改变是,900秒刷新到disk一次
save 900 1
#当有10条Keys数据被改变时,300秒刷新到disk一次
save 300 10
#当有1w条keys数据被改变时,60秒刷新到disk一次
save 60 10000
#当dump   .rdb数据库的时候是否压缩数据对象
rdbcompression yes
#dump数据库的数据保存的文件名
dbfilename dump.rdb
#Redis的工作目录
dir /home/falcon/redis-2.0.0/
###########   Replication #####################
#Redis的复制配置
# slaveof <masterip> <masterport>
# masterauth <master-password>############## SECURITY ###########
# requirepass foobared

############### LIMITS ##############
#最大客户端连接数
# maxclients 128
#最大内存使用率
# maxmemory <bytes>

########## APPEND ONLY MODE #########
#是否开启日志功能
appendonly no
# 刷新日志到disk的规则
# appendfsync always
appendfsync everysec
# appendfsync no
################ VIRTUAL MEMORY ###########
#是否开启VM功能
vm-enabled no
# vm-enabled yes
vm-swap-file logs/redis.swap
vm-max-memory 0
vm-page-size 32
vm-pages 134217728
vm-max-threads 4
############# ADVANCED CONFIG ###############
glueoutputbuf yes
hash-max-zipmap-entries 64
hash-max-zipmap-value 512
#是否重置Hash表
activerehashing yes

复制代码

启动Redis

[[email protected]   ~/redis-2.0.0]$ ./redis-server redis.conf
检测Redis是否启动:
[[email protected]   ~/redis-2.0.0]$ netstat -an -t
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address             Foreign Address          State
tcp        0    0 0.0.0.0:10022             0.0.0.0:*                LISTEN
tcp        0    0 0.0.0.0:6379             0.0.0.0:*                LISTEN
……..
[[email protected]   ~/redis-2.0.0]$ ps -ef|grep redis-server
falcon 7663     1   0 02:29 ?        00:00:00 ./redis-server redis.conf

Linux 设置用nobody用户执行crontab

方法一:

[root@localhost ~]# crontab -e -u nobody

输入

0 3 * * * /usr/local/php/bin/php /data/htdocs/crontab.php > /dev/null

方法二:当前用户设置

[root@localhost ~]# crontab -e

输入

30 1 * * * su -c '/data/htdocs/crontab.php' -s /usr/local/php/bin/php nobody