【发布时间】:2017-04-01 23:47:36
【问题描述】:
我正在使用 Laravel、PHP7、PHP-FPM、APCu 和 NGINX。
我有一个 HTML 表单,用户可以在其中上传文件,它连接到 Upload.php。
文件处理:
- 验证
- 姓名
- 从 /tmp 移动到 /media
- 创建缩略图
- 创建数据库记录
一旦 PHP 脚本达到某个点,即使用户提前退出上传页面,我如何让它继续运行?否则一个恶意文件将留在目录中而没有数据库条目。
// Move uploaded file from /tmp to /media
Input::file('file')->move("/var/www/mysite/media", $image);
// Continue even if user exits early
// prevent a file in /media from not having a database record
// Thumbnail creation and other operations here
// May take several seconds
// Save database record
$image = new Gallery();
$image->name = $name;
$image->created_at = $date;
$image->save();
我应该使用ignore_user_abort(true) 并将操作包装在while(true) 中吗?
脚本中有其他布尔值,例如$upload = true。 while(true) 怎么知道代表 ignore_user_about(true) 而不是我设置的另一个 bool?
【问题讨论】:
-
您可以考虑将任务传递给队列。 Laravel 有关于如何处理图像的文档(base64 编码它们)。这是一种可能性。