rsync同步目录到其它服务器
#! /bin/bash
/usr/bin/rsync -avz --delete -e 'ssh -p 2222' /www/wwwroot/xxx/ root@crm:/www/wwwroot/xxx/ #! /bin/bash
/usr/bin/rsync -avz --delete -e 'ssh -p 2222' /www/wwwroot/xxx/ root@crm:/www/wwwroot/xxx/ 你遇到的问题是:日志里只显示 status=:ycp2 这种占位符,看不到真实参数值,这是因为 Yii1 虽然开启了参数记录,但默认不会把参数拼到 SQL 里,只会单独记录。
我给你一个100%能看到真实SQL、真实值的最终方案,复制就能用。
protected/config/main.php
'db'=>array(
'connectionString' => 'mysql:host=localhost;dbname=xxx',
'username' => 'xxx',
'password' => 'xxx',
'charset' => 'utf8',
'enableProfiling' => true,
'enableParamLogging' => true, // 必须开
),'log'=>array(
'class'=>'CLogRouter',
'routes'=>array(
array(
'class'=>'CFileLogRoute',
'categories'=>'system.db.CDbCommand.query',
'levels'=>'profile',
'logFile'=>'sql_real_'.date('Y-m-d').'.log',
// 关键:把参数和SQL拼在一起
'filter'=>array(
'class'=>'CLogFilter',
),
),
),
),新建文件:protected/components/DbLogger.php
<?php
class DbLogger extends CDbCommand
{
public function query($fetchMode = null)
{
$sql = $this->getText();
$params = $this->params;
// 把占位符替换成真实值
foreach ($params as $key => $value) {
$sql = str_replace($key, var_export($value, true), $sql);
}
// 记录真实SQL
Yii::log($sql, 'profile', 'db.real');
return parent::query($fetchMode);
}
}然后在 db 配置里加一行:
'db'=>array(
'connectionString' => 'mysql:host=localhost;dbname=xxx',
'username' => 'xxx',
'password' => 'xxx',
'charset' => 'utf8',
'enableProfiling' => true,
'enableParamLogging' => true,
'commandClass' => 'DbLogger', // 加这一行
),array(
'class'=>'CFileLogRoute',
'categories'=>'db.real',
'levels'=>'profile',
'logFile'=>'sql_real_'.date('Y-m-d').'.log',
),2025-04-08 11:22:33 [profile] db.real
SELECT * FROM user WHERE status=1 AND id=100直接看到完整SQL + 真实值,没有占位符
如果你不想新建文件,只想快速看到值,用这个日志配置:
array(
'class'=>'CWebLogRoute',
'categories'=>'system.db.*',
'levels'=>'profile,trace',
),页面底部会显示:
SELECT * FROM user WHERE status=:ycp2
Bound with {":ycp2":1}虽然不是拼在一起,但能直接看到值。
你只要告诉我:
直接结论:普通 MP4 放七牛云,网页播放默认是“渐进式下载”,不是一次性全下,但很容易被当成整文件下载、流量浪费大;大视频强烈建议用 HLS(m3u8) 流式播放。
浏览器 <video> 播放普通 MP4:
moov 元数据在文件末尾,播放器往往要下载到末尾才能定位,等价于“几乎全下”。七牛云 CDN:
播放行为:
七牛操作:
avthumb/m3u8),生成 m3u8 地址。video.js、七牛 Web 播放器)播放 m3u8 链接。moov 元数据从末尾移到开头(Fast Start)。效果:
七牛操作:
或本地用 ffmpeg 预处理:
ffmpeg -i input.mp4 -c copy -movflags +faststart output.mp4| 方式 | 流量消耗 | 拖动体验 | 实现成本 | 适用场景 |
|---|---|---|---|---|
| 普通 MP4(moov 后置) | 高(易全下) | 卡顿、需等很久 | 低 | 小视频(<50MB)、极少拖动 |
| 优化 MP4(moov 前置) | 中(仍会缓冲全文件) | 流畅、定位快 | 低 | 中小视频、需兼容所有浏览器 |
| HLS(m3u8)流式 | 低(按需加载片段) | 秒定位、自适应 | 中 | 大视频、高并发、省流量 |
要不要我给你一份可直接复制的七牛云 HLS 切片接口调用示例(含参数和前端播放代码)?
仓库名建议:你的名字/包名
例如:zhangsan/yii2-demo
创建时勾选:
然后 克隆到本地
git clone https://github.com/xxx/yyy.git
cd yyy在项目根目录执行:
composer init一路回答:
你的名字/包名 (必须)最后会生成 composer.json
确保 composer.json 里有这段:
"autoload": {
"psr-4": {
"你的命名空间\\": "src/"
}
}然后执行:
composer dump-autoload创建目录结构:
src/
└── Demo.phpDemo.php 示例:
<?php
namespace 你的命名空间;
class Demo
{
public function hello()
{
return "hello world";
}
}git add .
git commit -m "first commit"
git push点击:Submit
输入你的 GitHub 仓库地址:
https://github.com/xxx/yyy点检查 → 提交
成功!
现在别人就能用:
composer require 你的名字/包名别人安装:
composer require zhangsan/yii2-demo就能直接用:
use 你的命名空间\Demo;
$demo = new Demo();
echo $demo->hello();完成!