从根本上说,您有两个选择:
选择一,你让每个脚本检查它是否有它需要的所有数据,然后做所有的工作来计算下一步(或其他)。这实际上比听起来要困难得多,因为您会遇到并发问题。
基本上,这种方法会导致不止一个“过程”——页面加载——试图对相同的数据做同样的工作,这为你要么根本不做工作,要么做的比赛打开了大门它两次。
选择二,听起来更难,是你编写另一个 PHP 脚本来检查它是否有所有的动作,计算结果,并在后台更新数据库(或其他)。
然后,通过 cron 作业或类似的方式运行它,这样您一次只能运行一个实例。这让生活变得更轻松:您的“一切都完成了”脚本只运行一次,因此您不必担心比赛 - 但在提交最后一步和计算结果之间可能存在延迟。
从长远来看,这种方法实际上更容易,因为虽然它涉及更多代码和更多移动部件,但它实际上避免了困难问题(并发),以换取一些更简单的问题(更多代码,使用 cron)。
当然,您可以在这两个方面进行改进,但这些是基本模型。锁定和其他协调技术可以使“在最后一页计算”工作得更好,但它们涉及到你解决比赛。
使用各种“后台作业”工具可以改善第二种方法的延迟,让您立即触发检查,而不仅仅是在计时器上。您仍然有一些延迟,但用户看不到它。
但是,实际上,您可以选择这两种策略中的一种并采用它。
(另外,我强烈建议如果可以的话,抓住一个框架或其他人已经解决了这些问题的东西,然后使用它。)