折腾了两个小时左右,sablog基本迁移成功(不过我是在全新代码下的,我线上的代码有过一部分改动,估计到时候还要折腾一下)
主要是几个地方:
1、db_mysql类。目前我凡是用到的地方,都已经判断过了。可能还有坑
2、preg_replace_callback,点了很多页面,目前也基本上都已经OK了。
原程序用的是error_reporting(0),所以一些notice,warning都不会显示 。所以极大的可能是一出错就白屏。我改成error_reporting(7),大部分问题都解决了。
准备什么时候迁移的时候再试一下。(服务器上还有不少站点。还要备份数据库,太累了,升还是不升,这是个问题!)
本来想将当前的服务器升级到PHP7的,在临最后动手的一霎那,突然想起,sablog用的是mysql_*的函数,在PHP7已经彻底没有了。
感慨一下没有手贱啊。不然就死啦死啦的了。准备这两天将原来的mysql类改用PDO实现一下,然后本地跑一下,看看PHP7是不是可以运行。如果OK的话,准备升级!
之所以提起这个功能,是因为在windows下面太方便了,进入cmd窗口:ipconfig /flushdns ,轻轻松松处理
在mac上面就没有这么方便了,很久前,用“dscacheutil -flushcache”就可以解决了。但自从升级后这些命令就没有了,你必须得用这个组合才能清理干净:
XML/HTML代码
- sudo dscacheutil -flushcache
- sudo killall -HUP mDNSResponder
这不是什么新命令。
为什么会再提起它?是因为我在家里dmz了我的mac mini,然后,路由器自动拨号后,mac mini也在dnspod 上更新了IP,但因为我在几分钟前刚访问绑定在家里mac上的域名。导致dns信息被cache,所以才需要清理它。
将上面的内容清入到一个sh文件。chmod +x 一下,再ln -sf 到/usr/bin目录下,就可以全局调用了。灰常方便
在使用Lumen进行开发的时候。如果你使用:./artisan的时候报错:Cannot declare class Event, because the name is already in use。检查一下LOG发现是:
XML/HTML代码
- [2016-12-07 15:27:37] lumen.ERROR: ErrorException: Cannot declare class Event, because the name is already in use in /home/web/vendor/laravel/lumen-framework/src/Application.php:661
- Stack trace:
- #0 [internal function]: Laravel\Lumen\Application->Laravel\Lumen\Concerns\{closure}(2, 'Cannot declare ...', '/Volumes/docume...', 661, Array)
- #1 /home/web/vendor/laravel/lumen-framework/src/Application.php(661): class_alias('Illuminate\\Supp...', 'Event')
- #2 /home/web/vendor/laravel/lumen-framework/src/Application.php(631): Laravel\Lumen\Application->withAliases(Array)
- #3 /home/web/vendor/laravel/lumen-framework/src/Application.php(766): Laravel\Lumen\Application->withFacades(true)
- #4 /home/web/vendor/laravel/lumen-framework/src/Console/Kernel.php(54): Laravel\Lumen\Application->prepareForConsoleCommand(true)
- #5 [internal function]: Laravel\Lumen\Console\Kernel->__construct(Object(Laravel\Lumen\Application))
- #6 /home/web/vendor/illuminate/container/Container.php(794): ReflectionClass->newInstanceArgs(Array)
- #7 /home/web/vendor/illuminate/container/Container.php(644): Illuminate\Container\Container->build('App\\Console\\Ker...', Array)
- #8 /home/web/vendor/laravel/lumen-framework/src/Application.php(211): Illuminate\Container\Container->make('App\\Console\\Ker...', Array)
- #9 /home/web/vendor/illuminate/container/Container.php(231): Laravel\Lumen\Application->make('App\\Console\\Ker...', Array)
- #10 /home/web/vendor/illuminate/container/Container.php(746): Illuminate\Container\Container->Illuminate\Container\{closure}(Object(Laravel\Lumen\Application), Array)
- #11 /home/web/vendor/illuminate/container/Container.php(644): Illuminate\Container\Container->build(Object(Closure), Array)
- #12 /home/web/vendor/laravel/lumen-framework/src/Application.php(211): Illuminate\Container\Container->make('Illuminate\\Cont...', Array)
- #13 /home/web/artisan(32): Laravel\Lumen\Application->make('Illuminate\\Cont...')
- #14 {main}
看了一下,Application.php的第661行对应的方法,我靠。
PHP代码
-
-
-
-
-
-
- public function withAliases($userAliases = [])
- {
- $defaults = [
- 'Illuminate\Support\Facades\Auth' => 'Auth',
- 'Illuminate\Support\Facades\Cache' => 'Cache',
- 'Illuminate\Support\Facades\DB' => 'DB',
- 'Illuminate\Support\Facades\Event' => 'Events',
- 'Illuminate\Support\Facades\Gate' => 'Gate',
- 'Illuminate\Support\Facades\Log' => 'Log',
- 'Illuminate\Support\Facades\Queue' => 'Queue',
- 'Illuminate\Support\Facades\Schema' => 'Schema',
- 'Illuminate\Support\Facades\URL' => 'URL',
- 'Illuminate\Support\Facades\Validator' => 'Validator',
- ];
-
- if (! static::$aliasesRegistered) {
- static::$aliasesRegistered = true;
-
- $merged = array_merge($defaults, $userAliases);
- foreach ($merged as $original => $alias) {
- class_alias($original, $alias);
- }
- }
- }
。。。。。怎么可以这样写呢?也不担心代码会不会冲突。就直接这样了??怪不得很多代码识别不了。更痛苦的是,前段时间为了测试命令行下的多线程,加载了:brew install php70-event,直接就冲突了。
不得已,brew remove php70-event。反正这个我也几乎用不到。哎~
所幸,搞定
说实话,本来不想转这篇博客的,但真的被百度搞死了。在百度云盘上下载东西,如果超过一定的大小,就非得让你装它的客户端。好吧,这我也忍了。然而装了客户端后,输入用户名和密码的登录的时候,一直提示:你当前的登录环境不安全。我在外面你说不安全也就算了,我在家里也还说不安全?忍无可忍的删除了。
然后有个朋友也是类似的情况,最后他曲线救国,先绑定一个社交账号,然后用社交账号登录。。。然而,我并不想这样。
Aria2是别人介绍的,于是我就google了一把,找到这篇文章。。http://www.jianshu.com/p/1290f8e7b326,转一下吧。也许有需要的人呢。
以下内容来自原网站:
从Windows上转过来,一直没找到一个和IDM一样优秀的下载软件,直到遇见「aria2」。
什么是aria2
aria2官网介绍:
aria2 is a lightweight multi-protocol & multi-source command-line download utility. It supports HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink. aria2 can be manipulated via built-in JSON-RPC and XML-RPC interfaces.
简单来说就是有以下特性:
- 支持多协议: HTTP / HTTPS,FTP,SFTP,BitTorrent和Metalink
- 多线程连线:aria2 会自动从多个线程下载文件,并充分利用你的带宽;
- 轻量:运行时不会占用过多资源,根据官方介绍,内存占用通常在 4MB~9MB,使用BitTorrent 协议,下行速度 2.8MB/s 时 CPU 占用率约 6%;
- 全功能 BitTorrent 客户端,可以当BT客户端使用,抛弃迅雷。
- 支持 RPC 界面远程控制
aria2的安装与使用
安装
方法有二
- 从aria2官网下载对应系统的安装包,双击安装。
- 使用homebrew安装:
brew install aria2
配置
aria2 提供两种方式使用,一种是直接命令行模式下载,不推荐使用这种方法,推荐使用另外一种 RPC 模式,这种方式 aria 启动之后只会安静的等待下载请求,下载完成后也只会安静的驻留后台不会自动退出。而使用RPC模式推荐做一个配置文件方便使用。
新建一个名为aria2.conf
的配置文件,复制下面的内容到文件内。
#用户名 #rpc-user=user #密码 #rpc-passwd=passwd #上面的认证方式不建议使用,建议使用下面的token方式 #设置加密的密钥 #rpc-secret=token #允许rpc enable-rpc=true #允许所有来源, web界面跨域权限需要 rpc-allow-origin-all=true #允许外部访问,false的话只监听本地端口 rpc-listen-all=true #RPC端口, 仅当默认端口被占用时修改 #rpc-listen-port=6800 #最大同时下载数(任务数), 路由建议值: 3 max-concurrent-downloads=5 #断点续传 continue=true #同服务器连接数 max-connection-per-server=5 #最小文件分片大小, 下载线程数上限取决于能分出多少片, 对于小文件重要 min-split-size=10M #单文件最大线程数, 路由建议值: 5 split=10 #下载速度限制 max-overall-download-limit=0 #单文件速度限制 max-download-limit=0 #上传速度限制 max-overall-upload-limit=0 #单文件速度限制 max-upload-limit=0 #断开速度过慢的连接 #lowest-speed-limit=0 #验证用,需要1.16.1之后的release版本 #referer=* #文件保存路径, 默认为当前启动位置 dir=/User/xxx/Downloads #文件缓存, 使用内置的文件缓存, 如果你不相信Linux内核文件缓存和磁盘内置缓存时使用, 需要1.16及以上版本 #disk-cache=0 #另一种Linux文件缓存方式, 使用前确保您使用的内核支持此选项, 需要1.15及以上版本(?) #enable-mmap=true #文件预分配, 能有效降低文件碎片, 提高磁盘性能. 缺点是预分配时间较长 #所需时间 none < falloc ? trunc << prealloc, falloc和trunc需要文件系统和内核支持 file-allocation=prealloc
默认下载路径的「/Users/xxx/Downloads」可以改为任何你想要的绝对路径。此处写为 Downloads 目录,xxx 请自行替换成你的 Mac 用户名,然后保存,退出编辑器。
启动
在终端里面输入 aria2c --conf-path=<PATH>
,将PATH
换成刚刚保存的aria2.conf的绝对路径。比如说,aria2.conf是放在文档内,则PATH就是/Users/xxx/Documents/aria2.conf
。可以使用 -D 参数使Aria2在后台运行,即使关闭终端也不会停止运行。
完整的运行命令如下: aria2c --conf-path="/Users/xxx/Documents/aria2.conf" -D
,终端里输入这个aria2就启动了。关机或者关闭了aria2之后,重新启动都要输入这个命令,所以请保存好这个命令。
如何关闭aria2呢,很简单:
可以到活动监视器中找到 aria2c 杀掉,也可以在终端输入kill aria2之后按 Tab 键,aria2 会自动变成进程号,回车即可杀掉它。
使用
启动完成就需要开始下载了,这就需要一个管理界面了。有两个很优秀的在线工具YAAW和Aria2 WebUI
。两个都很优秀随便选一个就好,我使用的是后者。
注: YAAW需要在界面的设置里输入http://localhost:6800/jsonrpc
,Aria2 WebUI打开可直接使用。
高阶使用
如果经常在百度云上下载东西,配合BaiduExporter这个扩展就会非常方便好用了。
首先下载扩展,Chrome,Firefox和Safari都有:
- Chrome
- Firefox
- Firefox(XPI):下载后打开 Firefox,Ctrl/Command + O 打开选择文件对话框选中 XPI 包即可安装。
- Safari:下载后双击安装即可。
安装完成后进入百度云的下载界面,会发现网页上多出一个「导出下载」按钮,点击它弹出的「ARIA2 RPC」就自动添加到你的下载队列里了。
感谢
这篇文章主要参考了少数派里的Mac 上使用百度网盘很烦躁?花点时间配置 aria2 吧这篇文章和BaiduExporter作者的介绍。感谢他们的总结和付出。
文/Vaayne(简书作者)
原文链接:http://www.jianshu.com/p/1290f8e7b326
---EOF---
原文还有件事没有提,那就是Chrome插件已经失效了,所以,你得到作者的github上去下载:https://github.com/acgotaku/BaiduExporter,并且开启Chrome的允许本地扩展(github的readme里有使用方法)
为什么插件会失效呢?可以看这个链接:
查看链接(我真的找了半天才找到这个的)