PHP 5.x синхронизировал доступ к файлу (никакая база данных)

Ваш код не похож на то, что вы описываете. Приведенный ниже код должен отображать «Тест» MsgBox при открытии рабочих книг, соответствующих правилу запуска с «Текущий утвержденный»

'This Macro will run whenever an Excel Workbooks is opened
Private Sub MonitorApp_WorkbookOpen(ByVal Wb As Workbook)
    Dim cText As String
    cText = "Current Approved"

    If UCase(Left(Wb.Name, Len(cText))) = UCase(cText) Then
           ' Wb2.Activate
            MsgBox "Test"
    End If

End Sub
6
задан 2 revs, 2 users 100%user14070 1 July 2012 в 15:05
поделиться

2 ответа

Вы могли попробовать вариант php скопления (http://www.php.net/flock)

Я предположил бы что-то подобное (это предполагает, что файл /tmp/counter.txt уже существует и имеет счетчик в файле):

<?php

$fp = fopen("/tmp/counter.txt", "r+");

echo "Attempt to lock\n";
if (flock($fp, LOCK_EX)) {
  echo "Locked\n";
  // Read current value of the counter and increment
  $cntr = fread($fp, 80);
  $cntr = intval($cntr) + 1;

  // Pause to prove that race condition doesn't exist
  sleep(5);

  // Write new value to the file
  ftruncate($fp, 0);
  fseek($fp, 0, SEEK_SET);
  fwrite($fp, $cntr);
  flock($fp, LOCK_UN); // release the lock
  fclose($fp);
}

?>
7
ответ дан 10 December 2019 в 00:46
поделиться

Скопление PHP () функция является маршрутом для движения. Однако необходимо удостовериться, что все доступы к файлу защищены вызовом для скапливания () сначала. PHP не проверит, заблокирован ли файл, если Вы явно не выполняете вызов, чтобы сделать так.

Понятие фактически идентично как со взаимными исключениями (защищающий совместно используемые ресурсы, и др.), но достаточно важно перенести особое внимание.

3
ответ дан 10 December 2019 в 00:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: