silicoid

Рейтинг
171
Регистрация
13.10.2014
они будут копиться так как имя файла, это хэш запроса. то-есть, чем больше разных запросов, тем больше файлов.
если сервер выдержит нагрузку, то можно попробовать сделать так

        header('Content-Type: image/jpeg');
        imagejpeg($img);
        imagedestroy($img);
вместо
        imagejpeg($img, $new_filename);
        imagedestroy($img);
        $url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
        $url = str_replace("i.php", $new_filename, $url);
        header('Location: '.$url);
разумеется, сверху надо убрать все проверки иначе они будут просто молотить впустую.

но это опять же большая нагрузка на вычислительные ресурсы.
если картинка маленькая - вопросов нет. если картинка размером от 1600х1200 и больше, то нагрузка на процессор уже будет приличная.

вы зря убрали снизу

        imagejpeg($img, $new_filename);
imagedestroy($img);
        $url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
        $url = str_replace("i.php", $new_filename, $url);
        header('Location: '.$url);


это как раз тот кусочек кода, который создает на диске файл

зы.

Для правильной работы любых скриптов, связанных с записей/считыванием данных с диска, надо указывать абсолютный путь к файлу.
что-то вроде $file_path = $_SERVER['DOCUMENT_ROOT']  . '/filename.txt ';
Иначе в работе скриптов появляется очень много неизвестных.

iccup #:
Работает! Спасибо. Этот скрипт больше для личного пользования, потоков будет немного.

тут дело в том, что любое дерганье скрипта приведет к созданию нового файла. Чтобы этого не было нужно поступить следующим образом

$new_filename =  md5( $text ) . ".jpg";

Привязать имя файла к GET запросу
и еще можно сделать проверочку вида

//вставить после $text = $_GET['text']; 

$new_filename =  md5($text).".jpg";
if ( file_exists( $new_filename ))
{
        $url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
        $url = str_replace("i.php", $new_filename, $url);
        header('Location: '.$url);
        die(); /* или любой другой способ прервать выполнение функции, если это функция */
}

ну и ессно убрать присвоение имени внизу
тогда имя файла будет строго привязано к гет запросу и если запрос повторяется, то файл будет браться сразу с диска пропуская процесс создания. То-есть диск будет работать как кэш.

 imagejpeg($img, "1.jpg");
Замените на
$new_filename =  md5( rand( 0,time()) ).".jpg";
imagejpeg($img, $new_filename );

// ну и соответственно
$url = str_replace("i.php", $new_filename, $url);

А вообще надо бы по-хорошему мануалы на пы-хы-пы  почитать.

АПД
Причина сего совета проста.
если у вас будет 1 запрос, ок ручками удалите...  А если будет 500 000?
У вас тупо ляжет сервак из-за переполнения файлового буфера операционной системы.

поэтому создавать надо файл в памяти и выдавать его из памяти, а после выполнения скрипта память очищать.

см. первый пример к мануалу
https://www.php.net/manual/en/function.imagejpeg.php

Вы же перехватываете клик с помощью яваскрипта. Что мешает передавать данные им же?
А там их уже можно гнать как угодно. Хоть гетом, хоть постом, хоть в http заголовки запихать (правда это моветон)
Как уже сказали выше, код лучше побить на логически-разделенные методы, чтоб было проще в нем ковыряться. В остальном, вроде всё норм.
кидайте. Гляну.
Типовые пользователи описаны?
index = t.parents('.v3').find('div.iw').index( t.parent() );

Solmyr #:
А... ну если сервер с 24 Гб диска это для вас дорого, то тогда да, тогда другое дело, извините не понял о каких масштабах цифр речь идет. У меня сайт по недвижимости занимает ~10 Тб и пять серверов, но в деньгах это порядка 200 евро в месяц.

чёт дохрена она у вас в серверах занимает. Руки, помнится на 7 серверах на выдачу крутились 300к в день спокойно совершенно в пике до млн. + еще несколько стоек для внутренних служб.

(24 гб это копейки. После того, как я всё забросил, я всё скинул на обычный виртуальных хостинг за 400р/мес, где оно спокойно и сидит. А когда проект развивался у меня был арендованный 2U дедик в стойке, а он денежку поджирал. )

Всего: 1685