我有一个C模拟,我正在创建一个图形Web界面。我使用带有ajax的HTML来调用PHP,后者又调用shell来运行模拟。然后将输出传递回网页。
该脚本生成一个输出文件(带有输出到网页的链接)以及一个图形(使用对gnu图的调用和引用输出文件)。该网页还允许用户上传在C模拟中使用的输入文件。所有这些文件都是用户特定的。
如果网页上一次只有一个用户,则没有任何问题。但是,如果5个人想要同时运行模拟,那么用户特定的文件(输出,图形,输入)将被覆盖并搞砸。
我没有任何MySQL经验,而且我也不打算保存给定用户的输出或输入(如果他/她愿意,用户可以下载它们),所以我希望可能有一个相当的简单的解决方案,例如,在服务器上生成一个临时目录,在名称中根据用户的IP地址或某种东西使用某种识别标记。然后可以在模拟运行后的几分钟内删除此文件夹。任何人对此类事情都有任何想法吗?
或者我必须求助于MySQL吗?
编辑:如果允许最多同时运行5个用户,然后为其他用户创建队列,那也可以,但这可能会更加困难。
谢谢, 约什
答案 0 :(得分:2)
如果不将输出保存在某处,则无法执行此操作,因此您的临时目录计划很好。
每个人都会在不知名的网址上获得自己的输出集。
答案 1 :(得分:1)
也许您可以在C模拟中使用Threading。或者,您可以使用PHP Database Objects (PDO)设置MySQL数据库并将数据存储在那里。如果您可以使用C并且能够使用PHP执行ajax,那么mysql可能是最有效的解决方案,而不是C中的线程(假设C模拟相对复杂)
答案 2 :(得分:1)
您可以为访问用户创建会话标识符,并将该ID作为参数传递给您的c程序。
当您的c程序创建供用户显示的文件时,应使用该用户的会话标识符生成名称。
通过网页,用户可以查看与其会话标识符匹配的文件。通过这种方式,他们可以看到他们生成的文件,如果他们有一个带有会话标识符的文件,您也可以为用户设置控件,而不需要对c程序进行不必要的调用。
只是服务已经创建的那个。根据需要控制该标识符的生命周期。