在后台执行PHP的脚本时,若想看进程输出内容(如脚本中的echo信息),可执行以下命令查看
1 |
strace -p {pid} -ewrite |
其中,pid是进程的pid值,可以通过ps aux|grep ‘进程名’查看。
足迹,留给未来的自己
在后台执行PHP的脚本时,若想看进程输出内容(如脚本中的echo信息),可执行以下命令查看
1 |
strace -p {pid} -ewrite |
其中,pid是进程的pid值,可以通过ps aux|grep ‘进程名’查看。
软件:https://www.libreoffice.org/
安装完后,创建软连接: ln -s path/to/soffice /usr/local/bin/soffice
转换命令:
1 |
/usr/local/bin/soffice --headless --convert-to pdf ["path/to/source.doc(x)"] --outdir "/tmp" |
PS,如果报错,尝试以下步骤:
1.安装需要的扩展, yum install libXinerama.x86_64 (可以先 yum search libXinerama 看有哪些)
【参考:https://superuser.com/questions/688871/error-while-loading-shared-libraries-libxinerama-so-1-cannot-open-shared-objec】
2.安装java环境:
1 2 3 |
yum install java-1.8.0-openjdk-devel yum install java-1.8.0-openjdk |
【参考:https://phoenixnap.com/kb/install-java-on-centos】
3.若执行转换命令发现有中文乱码,安装字体,并重启机器:
1 |
yum groupinstall "fonts" |
将 /etc/locale.conf 内容改为 LANG="zh_CN.UTF-8" ,然后reboot重启。
【参考:https://blog.csdn.net/xujingcheng123/article/details/84643021】
附php参考代码:(带超时设置)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
/** * 将文件转换成pdf格式 * @param $source * @param $desti * @param string $bin * @throws * @return string */ public static function convert2Pdf($source, $desti, $bin = "/usr/local/bin/soffice"){ @exec("timeout 3 {$bin} --headless --convert-to pdf --outdir {$desti} {$source} > /dev/null"); $pathInfo = pathinfo($source); $destiFilePath = $desti."/{$pathInfo['filename']}.pdf"; if(!file_exists($destiFilePath)) throw new Exception("转换文件格式失败, ".__CLASS__."::".__FUNCTION__.", source:{$source}"); return $destiFilePath; } |
1 |
<span class="kwd">exec</span><span class="pun">(</span><span class="str">"timeout [seconds] [command]"</span><span class="pun">);</span> |
参考:https://stackoverflow.com/questions/9419122/exec-with-timeout
在执行脚本时,若使用ActiveRecord方式更新记录,默认情况下会更新记录对应的updated_at,若希望不更新updated_at,则可在save()前添加 $obj->timestamps = false;
如:
$user = User::find(1);
$user->age = 18;
$user->timestamps = false;
$user->save();
在数据集较大时,使用chunk分块处理可以防止内存溢出,但若更新内容跟分块依赖字段一致,则会出现更新不完整现象。
简单描述原因:chunk内部机制会对依赖字段分页查询,但每处理过一个数据块,数据集会重新拉取,但此时分页的页码却在正常递增,此时会出现部分数据取不到现象。
Laravel中使用oauth做授权认证,包含1. 颁发访问令牌(授权码,最常用);2. 密码授权令牌;3. 隐式授权令牌;4.客户端凭证授权令牌;5.私人访问令牌
示例代码参考:
1 2 3 |
//Controller: $query = SendMessages::query()->orderBy('id', 'desc'); $record = $query->paginate($request->input('limit')??10);//paginate()的参数是每页显示的条数 |
1 2 3 4 5 |
//view: ...//table表格内容 {!! $record->links('vendor/pagination/default') !!} |
效果图:
若出现类似错误提示 get id of no-object
,且定位发现错误出现在/vendor/laravel/passport/src/PersonalAccessTokenFactory.php
文件中的类似代码:$client->id
, 则只需执行以下命令创建新的client即可:php artisan passport:install