Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在我的共享主机中调整图像大小、节省带宽和文件数量_Php_Shared Hosting_Image Resizing - Fatal编程技术网

Php 在我的共享主机中调整图像大小、节省带宽和文件数量

Php 在我的共享主机中调整图像大小、节省带宽和文件数量,php,shared-hosting,image-resizing,Php,Shared Hosting,Image Resizing,我使用的是共享网络托管,它只为我选择的包提供有限的选项。我的帐户中只能有10000个文件和5 GB的带宽。此策略已实施,他们正在强制我清理文件,否则他们将阻止我的帐户,或者我需要升级我的帐户。当我注册时,他们给了我无限的文件数量和无限的带宽。我已经用了一年多了。我不想升级我的帐户,也不想在此时转移到其他主机 我的网站上有大约75000个图像文件,每月使用大约25GB的带宽。在这些75000个图像文件中,3750个是独特的图像。其余的都是相同的图像,大小不同。我的意思是我有一个19种不同大小的图像

我使用的是共享网络托管,它只为我选择的包提供有限的选项。我的帐户中只能有10000个文件和5 GB的带宽。此策略已实施,他们正在强制我清理文件,否则他们将阻止我的帐户,或者我需要升级我的帐户。当我注册时,他们给了我无限的文件数量和无限的带宽。我已经用了一年多了。我不想升级我的帐户,也不想在此时转移到其他主机

我的网站上有大约75000个图像文件,每月使用大约25GB的带宽。在这些75000个图像文件中,3750个是独特的图像。其余的都是相同的图像,大小不同。我的意思是我有一个19种不同大小的图像文件。每个文件都有一个唯一的名称。比如说,

其中一个唯一图像的文件名为ab171.png
大小为800x600的同一图像的文件名为ab171_800_600.jpg
大小为640x480的同一图像的文件名为ab171_640_480.jpg
同样,我还有其他文件

因此,每个图像文件集有1个主文件和19个具有不同图像大小的其他文件

我的网站上的图像在大约20多个网站上使用。大约有10个被授权使用,其余的没有。我想阻止不在我的列表中的站点或警告它们不要使用我的带宽。如果我能实现下面的想法,我不会介意他们使用我的图片

现在,为了解决我的文件数量和带宽问题,我有了一个想法,我可以将主文件托管到一个图像托管站点,并使用timthumb脚本动态调整它的大小。(我有一个付费的图像托管帐户,我可以使用它。)

以下是我迄今为止所做的工作:

a。我提取了确切的图像文件名(例如文件名:ab171_800_600)

b。将旧文件名重定向到我的脚本,图像文件名作为参数(在上述步骤中提取)例如:
旧网址:myurl.com/images/thummbs/a/ab171_800_600.jpg
重定向为:myurl.com/thumbs.php?id=ab171_800_600

c。我编写了一个php脚本thumbs.php,它读取查询字符串id并提取图像id、图像宽度和图像高度。然后它检查数据库中的图像id以获取图像url(该url位于图像托管站点中)

d。然后脚本重定向到timthumb.php,并将图像url(托管在图像托管站点中)、高度和宽度作为参数

到目前为止,上述脚本运行良好。如果我从浏览器中导航到我的旧url myurl.com/images/thummbs/a/ab171_800_600.jpg,它会从图像宿主中完美地获取图像,并调整其大小并在浏览器中显示

我的问题是,图像没有显示在我的/其他网站上,旧图像URL链接在图像标记内。例:

请帮助解决此问题。欢迎你的建议


谢谢

您需要避免重定向

当您向回发送页面重定向时,浏览器会将整个页面重定向到HTTP标头中的位置

如果为图像发送回重定向,则无法执行此操作

您需要设计一个不依赖HTTP重定向的解决方案。我的建议通常是:

  • 请您的用户更新他们的链接(不太实用)
  • 不要重定向,而是在PHP页面中加载远程页面,这样就不需要重定向。您需要在响应上设置正确的内容类型
  • 第二个选项可能会使您回到带宽问题区域,但是您可以通过给响应提供很长的缓存时间来对此有所帮助

    另外,如果你没有得到你想要的服务,不要害怕找另一家托管公司

    更新-PHP显示远程图像

    只有在拥有图像宿主权限的情况下,才能使用此选项。您还应该知道,由于图像显示在PHP页面中,因此它将使用您的带宽

    header("Content-type: image/jpeg\n\n"); 
    $ch = curl_init ("http://....image.jpg"); // The URL you have already calculated in your question
    curl_setopt($ch, CurlOPT_HEADER, 0);
    curl_setopt($ch, CurlOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CurlOPT_BINARYTRANSFER,1);
    $rawdata=curl_exec ($ch);
    curl_close ($ch);
    echo $rawdata;
    

    唯一的解决办法是尽快离开那个骗子。

    毫无疑问,他们增加了CPU使用限制以及如此荒谬的文件数量限制

    你从所有的挣扎中得到的唯一结果是另一个极限突破。
    唯一的解决办法是找到另一个主机,一个正常的主机


    希望这能有所帮助。

    我建议根据您的网络主机的允许,使用file_get_contents()或curl来获取图像。

    也许改用GD库是个好主意。保留所有原始图像。当需要显示缩略图时,让php脚本为您生成缩略图。所以一个img标签可以是这样的:--GD库就是这样的。而且你不会被其他所有不同尺寸的额外文件所困扰。谢谢。但是,无法更改图像url。我无法控制大多数链接我的图片的网站。谢谢。但是,第一个选项不适合我,因为我无法编辑使用图像的每个位置。你能解释更多关于第二个选项的内容吗,因为我还是php的初学者。我添加了一个使用CURL.hmmm的示例。坦白地说,我现在没有钱升级或更换主机。我已经为这个主机支付了2年,还有1年。我希望能在这之前赚到钱,并尽快更换主机。但现在不可能。我没有从这些图片中获得任何东西。我在过去赚了很多钱,需要尽可能长时间地维护图片。以前我使用免费的图像托管,他们在一段时间后删除了我的图像。所以,我把这些图片放在自己的网站上。谢谢你没明白重点。这不是你自己的意愿。他们将阻止你的帐户的CPU过度使用,你将不得不找到另一个主机无论如何。+1-你的主机是在搞你。您可以获得无限带宽和磁盘空间的共享主机,每年约100美元