Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
Rariot
0 / 0 / 0
Регистрация: 04.03.2013
Сообщений: 10
1

Как лучше перезаписать файл

08.11.2017, 16:10. Просмотров 411. Ответов 7
Метки нет (Все метки)

Добрый день! Вопрос в принципе простой, что лучше и быстрее будет работать если делать запись и перезапись двумя способами:
1. Создаем файл заново файл (w+) - делаем запись - закрываем файл.
2. Открываем файл для чтения (r+) - обнуляем данные до нуля (ftruncate()) - делаем запись - закрываем файл.

Вот и вопрос возник, а что проще для сервера и быстрее, обнулять или создавать заново.

Размер данных примерно 900 байт, доступ к файлу у каждого к своему, то есть не будет очереди ожидания. Интервал обращений может быть минимально раз в секунду, но это редко, в основном раз в 5-15 сек и на протяжении 15-20 минут. Далее к файлу обращений не будет.

За ранее извиняюсь, если сумбурно описал действия
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2017, 16:10
Ответы с готовыми решениями:

Перезаписать содержимого файла
Всем привет! При нажатии на кнопку срабатывает событие, которое обрабатывает...

Перезаписать массив в php-файле
Как перезаписать массив в php-файле, (или даже как изменить php-файл)? В файле...

Посоветуйте как лучше сделать
Система такая, юзер переходит по ссылке(ссылка не прямая, перекидывает через...

Как лучше хранить корзину в интернет-магазине?
Добрый день. Как считаете, как лучше хранить корзину в интернет-магазине?...

Как лучше работать с символами строки в двухбайтовой кодировке?
Возникла проблема с обработкой двухбайтовых строк. Если с однобайтовой...

7
Qwerty_Wasd
1206 / 883 / 439
Регистрация: 16.04.2016
Сообщений: 2,383
Завершенные тесты: 2
08.11.2017, 22:41 2
Rariot, следуя вашим условиям -
1. флаг w+
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$start = microtime(true);
$text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque luctus, nisl a commodo ultrices, arcu sem maximus libero, sed iaculis ante urna at urna. Vestibulum eget leo vel ante accumsan aliquam quis et lectus. Vivamus non metus rutrum, efficitur erat sit amet, sagittis enim. Suspendisse potenti. Etiam rhoncus placerat eleifend. Duis a quam lacinia, eleifend tortor vitae, iaculis est. Cras mollis elementum purus, nec vulputate metus semper et.
 
Ut quam erat, aliquam ut imperdiet quis, bibendum sed massa. Duis quis lorem sagittis, accumsan eros id, dictum nulla. Nam mollis iaculis nisl, eu ullamcorper dolor. Mauris ut aliquet enim, imperdiet pellentesque mauris. Sed tellus velit, hendrerit quis diam et, interdum fringilla arcu. Nulla a consectetur elit. Ut maximus mauris elit, ut mattis risus ullamcorper ac. Nulla in felis at nulla sagittis fringilla. Cras non orci consequat, aliquet turpis ut, mattis dui. Ut pellentesque ac erat ut congue. Integer ornare rhoncus dui nec fringilla. Ut eu ante dolor. Quisque eu mattis ante, sed tempor magna. Vivamus ac condimentum odio.
 
Praesent lorem purus, viverra id ornare id, efficitur a metus. Nunc suscipit, sapien et lacinia commodo, ipsum purus tempus leo, eu pretium quam tortor eu erat. Nulla molestie viverra convallis. Nam dignissim pretium tortor, at volutpat erat condimentum vitae. Etiam eu nulla a dui pulvinar dictum at non risus. Cras lorem mauris, facilisis pharetra erat ac, vehicula fermentum ex. Quisque gravida massa a arcu convallis, eu porta justo fermentum. Integer lacinia, ipsum hendrerit accumsan efficitur, mi nibh molestie nunc, sit amet suscipit nibh sapien vitae dui. Donec accumsan nisi sed neque malesuada dignissim. Vivamus fermentum purus et odio vulputate lacinia. Maecenas sollicitudin placerat tortor. Cras ante ex, sodales eget nunc ut, aliquam scelerisque neque.
 
Aliquam eu urna neque. Donec id erat ante. Cras eu erat quis dui tincidunt posuere. Duis lobortis ligula vitae mauris vestibulum rutrum. Proin commodo metus lorem, tristique tincidunt nisi lacinia non. Cras et mi enim. Suspendisse sed libero eleifend, tincidunt lorem dictum, tristique arcu. Suspendisse vel nisl sed est dictum commodo. Donec ut dignissim elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
 
Praesent porttitor leo sem, at consectetur eros euismod ac. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed quam tortor, vulputate quis erat id, semper finibus neque. Proin luctus metus odio, nec pharetra sem pulvinar posuere. Mauris semper mauris nec dictum consequat. Vivamus elementum accumsan risus, id dignissim justo lacinia consequat. Vivamus ultrices est sit amet turpis euismod, at maximus velit elementum. Duis a nisi at nisi faucibus scelerisque et a tellus. Vestibulum vestibulum augue quis posuere convallis. Sed justo diam, pharetra ut dui a, pellentesque viverra nisl. Mauris vitae enim pellentesque, tincidunt sem nec, varius tortor.";
$fp = fopen("file.txt", "w+");
fwrite($fp, $text);
fclose($fp);
echo 'Время выполнения скрипта: '.(microtime(true) - $start).' сек.';
?>
Время выполнения скрипта: 0.00099992752075195 сек., иногда 0.0010001659393311 сек.

2. флаг r+
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$start = microtime(true);
$text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque luctus, nisl a commodo ultrices, arcu sem maximus libero, sed iaculis ante urna at urna. Vestibulum eget leo vel ante accumsan aliquam quis et lectus. Vivamus non metus rutrum, efficitur erat sit amet, sagittis enim. Suspendisse potenti. Etiam rhoncus placerat eleifend. Duis a quam lacinia, eleifend tortor vitae, iaculis est. Cras mollis elementum purus, nec vulputate metus semper et.
 
Ut quam erat, aliquam ut imperdiet quis, bibendum sed massa. Duis quis lorem sagittis, accumsan eros id, dictum nulla. Nam mollis iaculis nisl, eu ullamcorper dolor. Mauris ut aliquet enim, imperdiet pellentesque mauris. Sed tellus velit, hendrerit quis diam et, interdum fringilla arcu. Nulla a consectetur elit. Ut maximus mauris elit, ut mattis risus ullamcorper ac. Nulla in felis at nulla sagittis fringilla. Cras non orci consequat, aliquet turpis ut, mattis dui. Ut pellentesque ac erat ut congue. Integer ornare rhoncus dui nec fringilla. Ut eu ante dolor. Quisque eu mattis ante, sed tempor magna. Vivamus ac condimentum odio.
 
Praesent lorem purus, viverra id ornare id, efficitur a metus. Nunc suscipit, sapien et lacinia commodo, ipsum purus tempus leo, eu pretium quam tortor eu erat. Nulla molestie viverra convallis. Nam dignissim pretium tortor, at volutpat erat condimentum vitae. Etiam eu nulla a dui pulvinar dictum at non risus. Cras lorem mauris, facilisis pharetra erat ac, vehicula fermentum ex. Quisque gravida massa a arcu convallis, eu porta justo fermentum. Integer lacinia, ipsum hendrerit accumsan efficitur, mi nibh molestie nunc, sit amet suscipit nibh sapien vitae dui. Donec accumsan nisi sed neque malesuada dignissim. Vivamus fermentum purus et odio vulputate lacinia. Maecenas sollicitudin placerat tortor. Cras ante ex, sodales eget nunc ut, aliquam scelerisque neque.
 
Aliquam eu urna neque. Donec id erat ante. Cras eu erat quis dui tincidunt posuere. Duis lobortis ligula vitae mauris vestibulum rutrum. Proin commodo metus lorem, tristique tincidunt nisi lacinia non. Cras et mi enim. Suspendisse sed libero eleifend, tincidunt lorem dictum, tristique arcu. Suspendisse vel nisl sed est dictum commodo. Donec ut dignissim elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
 
Praesent porttitor leo sem, at consectetur eros euismod ac. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed quam tortor, vulputate quis erat id, semper finibus neque. Proin luctus metus odio, nec pharetra sem pulvinar posuere. Mauris semper mauris nec dictum consequat. Vivamus elementum accumsan risus, id dignissim justo lacinia consequat. Vivamus ultrices est sit amet turpis euismod, at maximus velit elementum. Duis a nisi at nisi faucibus scelerisque et a tellus. Vestibulum vestibulum augue quis posuere convallis. Sed justo diam, pharetra ut dui a, pellentesque viverra nisl. Mauris vitae enim pellentesque, tincidunt sem nec, varius tortor.";
$fp = fopen("file.txt", "r+");
ftruncate($fp, 0);
fwrite($fp, $text);
fclose($fp);
echo 'Время выполнения скрипта: '.(microtime(true) - $start).' сек.';
?>
Время выполнения скрипта: 0.00099992752075195 сек., иногда 0.0010001659393311 сек.

Результаты идентичны - думается мне, что с текстом на 1кило, разница мало изменится изменится(если вообще изменится).
При этом файл в обоих случаях уже существовал.
0
Jewbacabra
Эксперт PHP
3574 / 2967 / 1320
Регистрация: 24.04.2014
Сообщений: 9,016
09.11.2017, 00:54 3
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
Время выполнения скрипта: 0.00099992752075195 сек., иногда 0.0010001659393311 сек.
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
Время выполнения скрипта: 0.00099992752075195 сек., иногда 0.0010001659393311 сек.
прямо так точно совпало?
0
Rariot
0 / 0 / 0
Регистрация: 04.03.2013
Сообщений: 10
09.11.2017, 09:12  [ТС] 4
Вот я тормоз, я и забыл что можно посмотреть время выполнения. Но даже если время выполнения почти одинаково, то все же как лучше, возможно как правильнее или предпочтительнее, создавать файл заново или стирать данные? Или тут как кому нравится?
0
Jewbacabra
Эксперт PHP
3574 / 2967 / 1320
Регистрация: 24.04.2014
Сообщений: 9,016
09.11.2017, 09:29 5
Цитата Сообщение от Rariot Посмотреть сообщение
как лучше
Нужно только писать в файл, поэтому w без +
А еще лучше file_put_contents
0
Qwerty_Wasd
1206 / 883 / 439
Регистрация: 16.04.2016
Сообщений: 2,383
Завершенные тесты: 2
09.11.2017, 17:39 6
Jewbacabra,
Цитата Сообщение от Jewbacabra Посмотреть сообщение
А еще лучше file_put_contents
чем же? Нет же флага для перезаписи.
0
Jewbacabra
Эксперт PHP
3574 / 2967 / 1320
Регистрация: 24.04.2014
Сообщений: 9,016
09.11.2017, 18:13 7
Qwerty_Wasd, по дефолту перезапись. С флагом FILE_APPEND, или как-то так щапись в конец. Ну и лучше 1 вызов функции, чем
1
Qwerty_Wasd
1206 / 883 / 439
Регистрация: 16.04.2016
Сообщений: 2,383
Завершенные тесты: 2
09.11.2017, 18:17 8
Jewbacabra,
Цитата Сообщение от Jewbacabra Посмотреть сообщение
по дефолту перезапись.
понял, благодарю.
0
09.11.2017, 18:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.11.2017, 18:17

Как лучше всего отдавать данные на удалённый сервер?
На основном домене сайт, на поддоменах хранилища данных (медиа). Поддомены...

Как лучше всего организовать изменение списков учеников на сайте?
Тема затрагивает несколько технологий, поэтому точно не знал, куда писать....

Заменить в XML файле некоторое значение и перезаписать файл.
Подскажите пожалуйста как можно произвести замену в XML файле и записать его с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru