Владлен Хеллсайт, хотелось бы конечно чтобы так оно и было, но если посмотреть на тело сообщения, то тут не поможет одна функция base64_decode(), скорее пока предполагаю, что нужно отсекать конец поиском preg_* - конец письма, и оттуда раскодировать = профит письма. А вот как быть с вложениями...
Буду разбираться... Решений пока на просторах не обнаружил. Возможно плохо искал (((
> fseek не предлагать, он также читает из буфера уже скачанное.
В Вашем примере - происходит чтение из буфера, т.е. stream_get_contents помещает указатель уже в СКАЧАННЫЙ файл помещенный в буфер, оттуда локально происходит помещения указателя в любую точку файла.
Вы попробуйте с файлом в 500 мегабайт указатель переместить на НЕ СУЩЕСТВУЮЩУЮ область (т.к. она еще не скачана в буфер) - получиться что Вам сервер вернет ошибку 416.
stream_get_contents - Читает оставшуюся часть потока в строку
а это говорит о том, что остальная часть - это часть, которая уже получена, а т.к. она не получена, читать нечего, и будет ошибка 416. а нужно вычитывать из удаленного сервера именно с того начала, откуда мы запросили указатель байтов из предельного допустимого области видимости байтов из файла.
Дмитрий Ковальский: спасибо, но к сожалению изменять таблицы, вносить корректировки не получится, т.к. к БД подключается программа, специальна - разработанная для управления данными. Если что то изменить (пробовали) - то программа начинает высчитывать заново, и с последнего бекапа корректировать данные до исходного значения, вплоть до восстановления самой базы целиком.
спасибо, попробую этот вариант сделать. Целостность данных может быть и нарушена, дело в том что, данную таблицу разрабатывали "деятили", не я сам лично, мне передали уже все это дело для дальнейшей разработки...
а есть иное правило "проглатывания" ^([-a-zA-Z0-9_]+)/(.*)/$ - допустим вот такого? если меняете местами и возникате 500 - это конфликт, значит нужно установить только флаг L или расписать для каждого подходящего правила свои директивы и/или сделать наиболее отличающиеся URL, иначе ничего не получится
типа как то так делать: SELECT * FROM zadanie LEFT JOIN del_zadanie ON zadanie.id = del_zadanie.pid_zadanie WHERE del_zadanie.pid_zadanie IS NULL
zadanie = таблица с заданиями
del_zadanie = удаленные задания, которые не надо показывать
zadanie.id = идентификатор задания
del_zadanie.pid_zadanie = идентификатор задания таблицы zadanie (равное zadanie.id)