Изучите возможности работы с бинарными файлами. В общем случае решение поставленной задачи сведется к:
- открытие на запись\чтение
- нахождения начала ненужного куска
- нахождения конца ненужного куска
- побайтовое копирование информации с учетом сдвига и обнуление "хвоста"
Однако нужно понимать, что физический размер файла не уменьшится, так как в конце будут "нули".
Функций "вырезания" из файла на диске не существует в силу ряда ограничений. Поэтому любые операции с файлами сводятся к работе через временные файлы.
Очевидно это единственная возможность решения без создавания временных файлов.
Есть вопрос: если открыть два указателя на один файл (чтобы сразу считывать через один указатель и сразу писать на второй), то пройдет такое на разных операционках?
netwind: но временный потребует в 2 раза больше места на диске и затратам на поиск этого места.
утютю.
Суть проблемы в том, что классические библиотеки ввода-вывода "ортогональны". то есть состоят из набора функций, которые друг друга не дублируют или дублируют в крайних случаях.
Если возможно реализовать удаление блока внутри файла с помощью других элементарных функций, значит их не будут делать. это было нужно для переносимости ОС и стандартной библиотеки. Чем меньше функций нужно реализовать тем, легче их перенести. Для delphi и windows вообще, подобный вопрос не стоял.
А php с той же самой целью копирует функции стандартной библиотеки С.
а ну рахз утютю, то тогда вопросов больше нема.
Токо имейте в виду, что ц и делфи именно удаляют куски, а не перезаписывают весь файл.
rommer добавил 24.11.2011 в 01:03
Народ, кто знает, если открыть два указателя на один файл, то пройдет чтение/запись на разных операционках?
DenisVS: Можно fgets исходный файл, и лить в другой с помощью fputs.
а если влить в тот самый?:)
rommer добавил 23.11.2011 в 23:22
netwind: Раз позиция чтения и позиция записи в файле между собой не связаны.
значит, читая и записывая блоками в разные позиции можно перезаписать середину данными из конца и тем самым сократить файл.
разумеется, через программу придется "прокачать" весь остаток файла и это не очень быстро.
Лучше уж временный
а в какой ОС или языке это есть?
да в любом. Во всяком случае в дельфах и сях точно есть. правда, там со стримами работа, а не с указателями.
ullltraS: ТИЦ и место в выдаче - вообще два понятия не совместимых почти, то есть от ТИЦа посещаемость практически не зависит. У меня был сайт 25к в сутки, ТИЦ 10.
По теме: ТС, а тематика сайта то хоть какая?
Сужу по рейтингам кнопок-счетчиков.
Те сайты, где тиц десять, дотягивают максимум до 100-150 челов в сутки.
это вряд ли.
Они просто считают по разному.
Я за свои 7,5% плачу 570 р/мес.
тоже может быть.
Вам следует попросить хостера сделать статистику загрузки процаболее подробной.
Хорошая вещь для оптимизации скриптов.
Судя по тому как возбудились те, кто имеет отношение к воровству денег в gogetlinks, угадал на 100%.😂
Автору темы спасибо. После этого к таким красавам ни ногой. И вам не советую.
маловато. У моего хостера 30
+ есть статистика по запросам, которые грузят процессор (кто-когда-запрос).
На разных операционках - различная реализация.
Пробуйте.
значит или гонять указатель или временный файл.
Еще бы кто сказал, что из этого оптимальнее
Ну почему же?
Изучите возможности работы с бинарными файлами. В общем случае решение поставленной задачи сведется к:
- открытие на запись\чтение
- нахождения начала ненужного куска
- нахождения конца ненужного куска
- побайтовое копирование информации с учетом сдвига и обнуление "хвоста"
Однако нужно понимать, что физический размер файла не уменьшится, так как в конце будут "нули".
Функций "вырезания" из файла на диске не существует в силу ряда ограничений. Поэтому любые операции с файлами сводятся к работе через временные файлы.
Очевидно это единственная возможность решения без создавания временных файлов.
Есть вопрос: если открыть два указателя на один файл (чтобы сразу считывать через один указатель и сразу писать на второй), то пройдет такое на разных операционках?
но временный потребует в 2 раза больше места на диске и затратам на поиск этого места.
утютю.
Суть проблемы в том, что классические библиотеки ввода-вывода "ортогональны". то есть состоят из набора функций, которые друг друга не дублируют или дублируют в крайних случаях.
Если возможно реализовать удаление блока внутри файла с помощью других элементарных функций, значит их не будут делать. это было нужно для переносимости ОС и стандартной библиотеки. Чем меньше функций нужно реализовать тем, легче их перенести. Для delphi и windows вообще, подобный вопрос не стоял.
А php с той же самой целью копирует функции стандартной библиотеки С.
а ну рахз утютю, то тогда вопросов больше нема.
Токо имейте в виду, что ц и делфи именно удаляют куски, а не перезаписывают весь файл.
rommer добавил 24.11.2011 в 01:03
Народ, кто знает, если открыть два указателя на один файл, то пройдет чтение/запись на разных операционках?
Можно fgets исходный файл, и лить в другой с помощью fputs.
а если влить в тот самый?:)
rommer добавил 23.11.2011 в 23:22
Раз позиция чтения и позиция записи в файле между собой не связаны.
значит, читая и записывая блоками в разные позиции можно перезаписать середину данными из конца и тем самым сократить файл.
разумеется, через программу придется "прокачать" весь остаток файла и это не очень быстро.
Лучше уж временный
а в какой ОС или языке это есть?
да в любом. Во всяком случае в дельфах и сях точно есть. правда, там со стримами работа, а не с указателями.
а ведь таки нет такого, как delete($fp,$pos,$length)
Вот это называется приплыли 😂
Не ожидал от php такого
запихивай тизеры-баннеры в ифреймы. Помогает.
Только в статичные, иначе сайт можеш положить.
ТИЦ и место в выдаче - вообще два понятия не совместимых почти, то есть от ТИЦа посещаемость практически не зависит. У меня был сайт 25к в сутки, ТИЦ 10.
По теме: ТС, а тематика сайта то хоть какая?
Сужу по рейтингам кнопок-счетчиков.
Те сайты, где тиц десять, дотягивают максимум до 100-150 челов в сутки.
Те кто больше, у тех выше тиц.
Может и случайность, не знаю.