我正在编写一个脚本,下载所有图像,计算MD5哈希值,然后将该哈希值存储在数据库的新列中。我有一个脚本,从数据库中选择图像并在本地保存。图像的唯一ID成为文件名。
我的问题是,虽然cURLQueue非常适合快速下载许多文件,但计算回调中每个文件的MD5哈希会减慢下载速度。那是我的第一次尝试。对于我的下一次尝试,我想分离我的代码的下载和散列部分。做这个的最好方式是什么?我更喜欢使用PHP,因为这是我最熟悉的以及我们的服务器运行的内容,但PHP的线程支持至少可以说是缺乏。
想法是让父进程建立SQLite连接,然后生成许多选择图像的子进程,计算它的哈希值,将其存储在数据库中,然后删除图像。我走的是正确的道路吗?
答案 0 :(得分:1)
有很多方法可以解决这个问题,但您选择的方法实际上取决于项目的具体情况。
一种简单的方法是使用一个PHP下载图像,然后将它们放在文件系统上并向队列数据库添加一个条目。然后第二个PHP程序将读取队列,并处理那些等待。
对于第二个PHP程序,您可以设置一个cron作业来定期检查并处理所有正在等待的内容。第二种方法是每次下载完成后在后台生成PHP程序。第二种方法更为优化,但更多涉及。查看下面的帖子,了解如何在后台运行PHP脚本的信息。
Is there a way to use shell_exec without waiting for the command to complete?
答案 1 :(得分:0)