php - 两个文件和两个 AJAX 调用的并发

标签 php ajax concurrency

当使用两个不同的 AJAX 函数访问两个不同的文件时,我遇到了并发问题。

我无法使用数据库来执行以下任务,它只能使用这些文件来完成

问题

我有两个文件,AB:

// A content :
1 2 3 4
// B content :
5 6 7 8

我有两个 AJAX 调用,func_afunc_b

func_aA 的最后一个值添加到 B,并将 B 的最后一个值添加到 >一个

// Result after func_a 
A : 1 2 3 4 8
B : 5 6 7 8 4

func_bB 的最后一个值添加到 A,并将 A 的最后一个值添加到 >B

我考虑过并发性,但无论如何都会出现问题。首先,如果我在打开下一个文件之前读取并关闭每个文件,并且同时使用 func_a + func_b,我可以获得以下结果:

A : 1 2 3 4 8 8
B : 5 6 7 8 4 4

但想要的结果是:

A : 1 2 3 4 8 4
B : 5 6 7 8 4 8

此外,我认为我不能在整个过程中保持文件打开,否则可能会陷入僵局。

func_a open A;
func_b open B;
func_a can't open B, waits forever;
func_b can't open A, waits forever;

我很确定 PhP Mutex 不是我想要的,因为它无法在两个 AJAX 调用之间工作。另外,假设返回“抱歉,无法打开文件 B”不是一个选项,它必须在第一次尝试时起作用。

到目前为止我想到的每个解决方案都行不通:

使用 mutex.lock 临时文件检查资源是否已使用会导致相同的问题。

也许有一种方法可以检查 Apache 当前是否正在运行 func_a 以便 func_b 等待? (在这种情况下,资源匮乏是不可能的)

我不太习惯并发数学,我在互联网上找到的所有内容都与数据库和/或互斥体有关。

任何帮助将非常感激,也许有一个我没有想到的简单方法?

谢谢。

最佳答案

我不太明白你的意思,但是如果你想锁定文件以进行写入或读取,请在 php 中使用集群。 http://php.net/manual/en/function.flock.php

关于php - 两个文件和两个 AJAX 调用的并发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18536268/

相关文章:

php - 如何用 PHP 替换字符串中的变量?

javascript - 检查MySQL数据是否已存在,如果不存在则INSERT。 [PHP+jQuery Ajax]

java - 将线程注册到 Phaser

java - 需要 Delayed 和 Map 的混合

PHP fopen 权限被拒绝 - Windows Server 远程

javascript - 减少重复的 HTML 代码

ruby-on-rails - rails link_to remote with params

Ajax 调用 : What is the difference between new ActiveXObject ("Msxml2.XMLHTTP") and new ActiveXObject ("Microsoft.XMLHTTP")?

java - 从线程创建附加线程的最有效方法是什么?

php - 如何在WordPress的特定页面中显示特定类别的帖子