Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP调用shell脚本来处理多个用户_Php_Shell_Multiple Instances - Fatal编程技术网

PHP调用shell脚本来处理多个用户

PHP调用shell脚本来处理多个用户,php,shell,multiple-instances,Php,Shell,Multiple Instances,我有一个C模拟,我正在为它创建一个图形化的web界面。我使用HTML和ajax来调用PHP,PHP反过来调用shell来运行模拟。然后将输出传递回网页 该脚本生成一个输出文件(带有输出到网页的链接)以及一个图形(使用对gnu plot的调用并引用输出文件)。该网页还允许用户上传用于C模拟的输入文件。所有这些文件都是特定于用户的 如果一次网页上只有一个用户,则没有任何问题。但是,如果有5个人想同时运行模拟,则特定于用户的文件(输出、图形、输入)都将被覆盖并弄乱 我没有任何MySQL的经验,我也不打

我有一个C模拟,我正在为它创建一个图形化的web界面。我使用HTML和ajax来调用PHP,PHP反过来调用shell来运行模拟。然后将输出传递回网页

该脚本生成一个输出文件(带有输出到网页的链接)以及一个图形(使用对gnu plot的调用并引用输出文件)。该网页还允许用户上传用于C模拟的输入文件。所有这些文件都是特定于用户的

如果一次网页上只有一个用户,则没有任何问题。但是,如果有5个人想同时运行模拟,则特定于用户的文件(输出、图形、输入)都将被覆盖并弄乱

我没有任何MySQL的经验,我也不打算为给定的用户保存输出或输入(用户可以下载,如果他/她愿意),所以我希望可能有一个相当简单的解决方案,例如,在服务器上生成一个临时目录,根据用户的IP地址或其他信息在名称中使用某种标识标记。然后,可以在模拟运行几分钟后删除此文件夹。有人对这样的事情有什么想法吗

还是我必须求助于MySQL

编辑:允许最多5个用户同时运行,然后为其他用户创建一个队列也可以,但这可能会更加困难

谢谢,
Josh

也许您可以在C模拟中使用。或者,您可以设置一个MySQL数据库,并使用。如果您可以使用C,并且能够使用PHP实现ajax,那么mysql可能是与C中的线程相对应的最具时间效率的解决方案(假设C模拟相对复杂)

也许您可以在C模拟中使用。或者,您可以设置一个MySQL数据库,并使用。如果您可以使用C,并且能够使用PHP实现ajax,mysql可能是实现与C线程相对应的最具时间效率的解决方案(假设C模拟相对复杂)

如果不将输出保存在某个地方,您就无法实现,因此您的临时目录计划很好

  • 通过md5()或sha1()或其他方式为每个新用户分配一个唯一的id
  • 将id传递给模拟器,并让它在由该id命名的子目录中创建输出文件
  • 根据该id呈现链接和图像HREF
  • 编写cron以定期清除过时的子目录

每个人都将在一个不可用的URL上获得自己的输出集。

如果不将输出保存在某个地方,则无法完成此操作,因此您的临时目录计划很好

  • 通过md5()或sha1()或其他方式为每个新用户分配一个唯一的id
  • 将id传递给模拟器,并让它在由该id命名的子目录中创建输出文件
  • 根据该id呈现链接和图像HREF
  • 编写cron以定期清除过时的子目录

每个人都将在一个不可用的URL上获得自己的输出集。

您可以为访问用户创建会话标识符,并将该id作为参数传递给您的c程序

当您的c程序为用户创建要显示的文件时,它应该使用该用户的会话标识符生成名称

从网页允许用户查看与其会话标识符匹配的文件。通过这种方式,他们可以看到自己生成的文件,如果用户有一个带有会话标识符的文件,您也可以为用户设置一个控件,而无需对c程序进行不必要的调用


只需为已经创建的服务。根据需要控制该标识符的生存时间

您可以为访问用户创建会话标识符,并将该id作为参数传递给c程序

当您的c程序为用户创建要显示的文件时,它应该使用该用户的会话标识符生成名称

从网页允许用户查看与其会话标识符匹配的文件。通过这种方式,他们可以看到自己生成的文件,如果用户有一个带有会话标识符的文件,您也可以为用户设置一个控件,而无需对c程序进行不必要的调用


只需为已经创建的服务。根据需要控制该标识符的生存时间

如果您将一个指向输出的链接发送回用户,那么输出不应该存在超过几分钟的时间吗?也许。输出包括一个数字(三维数值积分的结果)、一个包含分布的文件(积分范围内的较小范围)和一个图形。输出只在下载的格式中才真正有用,所以我认为用户要么会获取它,要么不会想要它。但是“几分钟”只是一个例子。如果你把一个指向输出的链接发送回用户,那么输出不应该存在超过几分钟的时间吗?也许。输出包括一个数字(三维数值积分的结果)、一个包含分布的文件(积分范围内的较小范围)和一个图形。输出只在下载的格式中才真正有用,所以我认为用户要么会获取它,要么不会想要它。但“几分钟”只是一个例子,这正是我的想法,甚至可以使用cron清除目录。我只是想确定我走的是正确的道路。我对会话ID也不太了解,所以md5()和sha1()是我开始谷歌搜索的好地方。呵呵,我不会说这是“正确”的路径,只是许多可能的路径之一。这正是我的想法,甚至可以使用cron清除目录。我只是想确定我走的是正确的道路。我对会话ID也不太了解,所以md5()和sha1()是我开始谷歌搜索的好地方