问题标签 [flock]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
18383 浏览

macos - Mac OS X 等效于 Linux 群 (1) 命令

Mac OS X 上是否有管理文件锁定的flock 命令?

http://linux.die.net/man/1/flock

0 投票
2 回答
606 浏览

nosql - 图 DB 等效于二分网络投影?

假设一个网络有两种节点,比如用户和地点,关系为“一直在”。这是一个二分网络,通常由 networkx 之类的模块提供网络在两个方向中的任何一个方向的“投影”,这样我们就可以生成地点网络(链接的权重与普通用户的数量相同)或用户网络(链接的权重与公共场所的数量相同)。

我应该如何在 Graph 数据库中生成这样的网络?您能否提供最常见的开源示例,例如 OrientDB、Neo4j、FlockDB ......

更具体地说,如何用 gremlin 做到这一点?

在这种情况下(gremlin)我自己已经粘贴了一个答案,但是它从幸存的节点开始,从将要被投影的节点开始会更有效,因为通常第一步是一些间隔子选择

所以我们只对那些在某一天或某个其他时间段都在同一个地方相关的用户网络感兴趣。

0 投票
1 回答
6645 浏览

php - PHP 信号量的替代方案?

我正在制作一个小型在线游戏,其中(你知道什么)会有多个用户访问同一个数据库。我的主机没有启用信号量,我真的买不起其他东西(我是一名高中生),所以我正在寻找替代方案。

经过一些研究,我遇到了一些解决方法:


A)我做了几个函数来模仿信号量,我认为这和我需要的一样好:

(我知道 if 语句中有不必要的代码)。你们有什么感想?显然它并不完美,但一般做法可以吗?有什么问题吗?这是我第一次使用并发,我通常喜欢一种更有意义的低级语言。

无论如何,我想不出任何“逻辑缺陷”,我唯一关心的是速度;我读过这flock很慢


B) MySQL 还提供“锁定”功能。这与 相比如何flock?我假设如果一个用户的脚本锁定表而另一个用户请求它,它会阻塞?我能想到的问题是这会锁定整个表,但我只需要锁定个别用户(所以不是每个人都在等待)。


似乎人们说我不需要信号量来更新数据库。我发现您可以使用简单的增量查询,但我仍然需要解决一些示例:

如果我需要在提交操作之前检查一个值怎么办?就像假设我需要在允许攻击之前检查防御者是否足够强大,例如足够的健康。如果是这样,请在不让其他任何人弄乱/弄乱数据的情况下进行战斗并承受一些伤害。

我的理解是,每次都有几个查询,在一定长度的代码上(发送查询,获取数据,增加它,将它存储回来),并且数据库不够聪明来处理这个?还是我在这里弄错了?对不起

0 投票
0 回答
675 浏览

php - 在Linux上的多线程模式下PHP群是安全的吗?

PHP 群文档说它在像 ISAPI 这样的一些多线程服务器上是不安全的,因为锁是一个进程范围的东西,所以如果线程 1 上的一个 php 实例锁定了一个文件,线程 2 上的另一个 php 实例也可能会锁定它,因为从操作系统的来看同一个进程已经拥有了锁。

现在,PHP 文档说这只是某些操作系统上的问题,并以 ISAPI 为例。我的问题:这是否也可以在多线程模式下的 linux/apache 上发生,或者在这种情况下羊群安全吗?

0 投票
1 回答
7128 浏览

c - 如何使用 lockf() 解锁?

我想从 txt 文件中读取并在其中附加下一个数字,我也想使用 fork 作为第二个进程。在以下代码中,我需要帮助来解锁文件。我无法解锁文件。

0 投票
1 回答
697 浏览

file - flock 正确使用以防止边读边写

*/10 * * * * /usr/bin/flock -x -w 10 /tmp/craigslist.lock /usr/bin/lynx -width=120 -dump "http://sfbay.craigslist.org/search/roo/sfc?query=&srchType=A&minAsk=&maxAsk=1100&nh=6&nh=8&nh=16&nh=24&nh=17&nh=21&nh=22&nh=23&nh=27" | grep "sort by most recent" -A 53 > /home/winchell/apartments.txt

*/10 * * * * /usr/bin/flock -x -w 10 /tmp/craigslist.lock /usr/bin/php /home/winchell/apartments.php

这是一项计划任务。即使 lynx 正在写入 apartments.txt,第二行 php 命令似乎也在执行,我看不出原因。假设我在 lynx/grep 正在写入时试图阻止从 apartments.txt 中读取,这是正确的用法吗?谢谢!

0 投票
1 回答
1444 浏览

linux - TCL、Linux 和 FLOCK

所以我正在使用一个用 TCL 编写的程序,它使用 FLOCK 函数来锁定文件。我在比它当前运行的版本更新的 Linux 上测试它,我发现当更新的机器运行脚本时,它使用 /usr/bin/flock 中的 FLOCK,这与 FLOCK 的 TCL 版本不同。TCL 版本使用 -read -write 等,而 Linux 版本使用完全不同的选项。

简而言之,程序在执行任何 FLOCK 调用时都会停止工作并出错。如果我更改选项以适应 Linux 版本,它会破坏其他机器上的程序。

有没有办法让它使用 TCL 版本而不是 Linux 版本?

0 投票
1 回答
387 浏览

linux - 大量进程的缓存锁定?

我有一个脚本 1) 经常运行 2) 由许多不同的进程运行并且 3) 需要很长时间。

更新:需要很长时间的东西是测试谁的结果对于每个过程都是一样的。完全多余。

我认为是时候做一些缓存了,但我担心种族、冲突、腐败、时间漩涡不稳定和鸡的可能性。

复杂性是因为任何进程都可以更新缓存以及读取缓存,所以我必须知道如何处理所有这些组合。

在我看来,这闻起来像是比我更聪明、受过更多教育的人可能已经想出来的东西。

无论如何,为了使这个问题更具体,这就是我到目前为止的想法。我在脑海中使用羊群,不确定这是否是个好主意。

  • 如果缓存是新鲜的,请阅读并离开
  • 如果缓存过时
    • 尝试获得写锁
      • 如果我得到锁,请进行测试并更新缓存
      • 如果我没有得到锁,其他人有写锁还是读锁?
      • 如果它是共享的,为什么他们要读取陈旧的缓存?我是否忽略它们,进行测试并更新缓存(或者这可能导致它们读取一半写入的缓存......呃......)
      • 如果是独占的,请给他们一点时间来完成测试并更新缓存。

希望这是有道理的...

0 投票
2 回答
2853 浏览

php - php羊群和fread和fwrite

我看到人们像这样使用羊群:

还有这个:

但是其他人是否有机会在fopen通话和flock通话之间编辑文件?同样的问题fread


编辑:
为了澄清我为什么要问这个......我的问题是基于这里的代码,在 mysql 缓存情况下,如果他们都能够阻止 20 个人同时访问该文件,有什么办法可以在fopen和flock之间进入吗?

那个代码是万无一失的吗?

0 投票
2 回答
6745 浏览

linux - 在错误的情况下释放羊群?

想象一下下面的 Perl 代码(这里是伪代码):

在这种情况下,我不会释放锁,因为 Perl 脚本在第 2 行结束。在这种情况下,操作系统是否曾经释放过锁?它是否看到“嘿,获取锁的脚本崩溃”并释放锁?它会立即释放锁吗?此外,是否每个脚本都运行一个 Perl 实例,以便清楚哪个脚本在没有释放锁的情况下崩溃/停止?