通过PHP缩略图库提供大量照片时防止500内部服务器错误

时间:2014-12-06 11:26:12

标签: php apache webserver http-status-codes

我有一个网站,允许用户将照片提供(上传)到相册。

为了保护照片,它们存储在/public_html以外的文件夹中,并通过名为PHPThumb的脚本显示在页面中,该脚本显示质量较低的照片的小尺寸版本(因为可以上传分辨率照片),还允许用户将他们的水印添加到照片中。

我的问题是,有时当特定专辑(页面)有大量流量时,某些照片不会显示,或者整个页面完全显示500 Internal Server Error(即使我使用分页和仅显示每页40张照片)。在网站回来之前需要几秒钟,或者有时几分钟。

我认为使用缩略图库会减轻负载,因为服务器不必发送整个高分辨率照片,而只发送调整大小的版本。但情况似乎并非如此。

我正在使用共享的虚拟主机软件包,虽然我知道我的网络应用程序不建议使用共享,但在决定升级我的虚拟主机软件包之前,我想探索改进网站的其他任何选项。

有关阻止500错误的任何建议吗?

考虑到上述设置,也会接受好的网络主机的建议。 (我对服务器管理不太熟悉。)

1 个答案:

答案 0 :(得分:0)

  1. 这些缩略图不是在每次请求时动态生成的,而是缓存的,对吧?如果没有,你可以从那里开始。

  2. 将原始图像存储在公共目录之外是有意义的,但您可以考虑将缩略图存储在公共目录中,以便您可以直接提供它们而无需处理。

  3. 还要确保在提供这些缩略图时发送正确的缓存标头。考虑到缩略图是较大版本的小型副本,它不会改变,因此您可以将失效日期设置得很远。

    3.1但是,在您的情况下,您让用户在缩略图上添加水印,这样您就可以根据该水印缓存缩略图。您可以散列图像名称+水印并获取缩略图名称。如果水印会改变,缩略图名称也会不同,所以"远远超前"缓存过期标题不会咬你。