Изменение размера изображений, сохранение пропускной способности и количества файлов на моем общем хостинге - PullRequest
0 голосов
/ 14 ноября 2011

Я использую общий веб-хостинг, который предоставляет только ограниченные возможности для выбранного пакета. У меня может быть только 10 000 файлов в моей учетной записи и 5 ГБ полосы пропускания. Эта политика была реализована, и они заставляют меня очистить файлы, или они заблокируют мою учетную запись, или мне нужно обновить мою учетную запись. Когда я подписался, мне предложили неограниченное количество файлов и неограниченную пропускную способность. Я использую его уже больше года. Я не хочу обновлять свою учетную запись и не хочу переходить на какой-либо другой хостинг в данный момент.

На моем веб-сайте около 75000 файлов изображений, и я использую около 25 ГБ пропускной способности в месяц. Из этих 75000 файлов изображений 3750 являются уникальными. остальные из них одного изображения с разными размерами. Я имею в виду, у меня есть файл изображения с 19 различными размерами. каждый файл имеет уникальное имя. Например,

одно из уникальных изображений имеет имя файла как ab171.png
то же изображение размером 800x600 будет иметь имя файла как ab171_800_600.jpg
то же изображение размером 640x480 будет иметь имя файла как ab171_640_480.jpg
аналогично у меня есть другие файлы

Итак, каждый набор файлов изображений содержит 1 основной файл и 19 других файлов с различными размерами изображений.

Изображения с моего сайта используются на более чем 20 сайтах. около 10 разрешено использовать, а остальные нет. Я хотел бы заблокировать сайты, которых нет в моем списке, или предупредить, что они не используют мою пропускную способность. Я не возражаю против того, чтобы они использовали мои изображения, если бы я смог реализовать идею ниже.

Теперь, чтобы решить проблему с количеством файлов и пропускной способностью, у меня появилась идея, что я могу разместить основной файл на сайте размещения изображений и изменить его размер с помощью сценария timthumb на лету. (У меня есть платная учетная запись хостинга изображений, которую я могу использовать.)

Вот что я сделал до сих пор:

а. Я извлек точное имя файла изображения (бывшее имя файла: ab171_800_600)

б. перенаправил старое имя файла в мой скрипт с именем файла изображения в качестве параметра (извлечено на предыдущем шаге) Пример:
старый URL: myurl.com/images/thummbs/a/ab171_800_600.jpg
перенаправлено как: myurl.com/thumbs.php?id=ab171_800_600

с. Я написал php-скрипт thumbs.php, который читает идентификатор строки запроса и извлекает идентификатор изображения, ширину и высоту изображения. Затем он проверяет идентификатор изображения в базе данных, чтобы получить URL-адрес изображения (который размещен на сайте размещения изображений).

д. затем сценарии перенаправляют в файл timthumb.php с URL-адресом изображения (который размещается на сайте размещения изображений), высотой и шириной в качестве параметров.

Пока что вышеприведенный скрипт работает нормально. Если я перехожу к своему старому URL myurl.com/images/thummbs/a/ab171_800_600.jpg из браузера, он отлично выбирает изображение с хостинга изображений, изменяет его размер и показывает в браузере.

Моя проблема в том, что изображение не отображается на моих / других сайтах, где старые URL-адреса изображений связаны внутри тегов изображений. например: image

Пожалуйста, помогите решить эту проблему. Ваши предложения приветствуются.

Спасибо

Ответы [ 3 ]

2 голосов
/ 14 ноября 2011

Единственным решением будет выйти из этого мошеннического хостера как можно скорее.

Нет сомнений в том, что они добавили ограничения использования процессора , а также такие нелепые файлыограничение по количеству

Единственный результат, который вы получите от всей вашей борьбы, - это еще один предел.
Единственное решение - найти другой хостинг, нормальный.

Надеюсь, это поможет.

0 голосов
/ 14 ноября 2011

Я бы порекомендовал использовать file_get_contents () http://php.net/manual/en/function.file-get-contents.php или curl http://ca3.php.net/manual/en/ref.curl.php для получения изображения в зависимости от того, что позволяет ваш веб-хост.

0 голосов
/ 14 ноября 2011

Вам необходимо избегать перенаправления.

Когда вы отправляете перенаправление назад на страницу, браузер перенаправляет всю страницу в местоположение в заголовках HTTP.

Если вы отправляетеперенаправление назад для изображения, это не может быть сделано.

Вам необходимо разработать решение, которое не использует HTTP-перенаправление.Обычно я рекомендую либо:

  1. Попросить пользователей обновить свои ссылки (не очень практично)
  2. Вместо перенаправления загрузите удаленную страницу внутри вашей страницы PHP, так что нетПеренаправление требуется.Вам нужно будет установить правильный тип содержимого в ответе

Этот второй вариант потенциально вернет вас в проблемную зону пропускной способности, но вы могли бы немного помочь, дав ответ очень длинныйвремя кэширования.

Кроме того, не бойтесь найти другую хостинговую компанию, если вы не получаете нужную услугу.

Обновление - PHP Показать удаленный образ

Youследует использовать только если у вас есть разрешение от людей, размещающих изображение.Вы также должны знать, что, поскольку изображение отображается на вашей странице 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...