[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Извлечение строки и её удаление в файле с мин. выч
Страницы: 1, 2
Игорь_Vasinsky
сходу тока так.


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
yuriy
Ну и последний вариант с файловой блокировкой без использования файлового мьютекса:


class lib_TS_getFirstStringAndDelete extends gen_Tblk_ab {

/**
* public function perform()
*
*
@param Iregister $register
*
@param mixed $arrIn
*/

public function perform(Iregister $register = null, array $arrIn = array()) {

$nameFile = $arrIn[0];
if (!file_exists($nameFile))
return null;

$pathParts = pathinfo($nameFile);
$nameTmpFile = $pathParts['dirname'] . '/' . $pathParts['filename'] . '.tmp';
$nameLockFile = $pathParts['dirname'] . '/' . $pathParts['filename'] . '.lock';
$string = '';

$fileLock = fopen($nameLockFile, 'a');
flock($fileLock, LOCK_EX);
$file = fopen($nameFile, 'r');
$fileTmp = fopen($nameTmpFile, 'a');

if (($buffer = fgets($file)) !== false)
$string = trim($buffer);

while (($buffer = fgets($file)) !== false)
fwrite($fileTmp, $buffer);

fclose($file);
fclose($fileTmp);

if (unlink($nameFile))
rename($nameTmpFile, $nameFile);
else
unlink($nameTmpFile);

flock($fileLock, LOCK_UN);
fclose($fileLock);
unlink($nameLockFile);

return $string;

}

}



_____________
void x;
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.