Игорь_Vasinsky
5.03.2013 - 16:35
сходу тока так.
_____________
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
Ну и последний вариант с файловой блокировкой без использования файлового мьютекса:
class lib_TS_getFirstStringAndDelete extends gen_Tblk_ab {
@param @param
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;