我的php脚本读取用户指定的CSV URL并将数据写入mysql数据库,用户可以在Web GUI上查看他的数据。将使用新请求删除表的字段。 这非常好 - 但是:
如果2个(或更多)用户同时请求他们自己的CSV URL,有时他们不会得到他们自己的数据(他们之前从过程中获取该表的数据)。有没有办法将用户设置为“等待”或“待定”,直到另一个请求完成?
希望你明白。感谢您的任何建议。
答案 0 :(得分:1)
我假设您的应用使用Apache和mod_php,这是一种常见但不是唯一的方法。当一个新的HTTP请求由Apache构成时,它会产生一个新的PHP进程来处理请求。新的PHP进程必须完成所需的一切,并且当它完成时,PHP终止。
如果我理解你,你有一个提交URL(文本字段)的表单;当PHP运行时,该URL在php中被提取并且内容被放入数据库中。然后将数据库呈现为html并作为表单结果返回 - 或类似的东西。当两个人同时这样做时,事情变得混乱,因为他们都使用相同的表名。
如果我理解得当,应用程序需要:
我不确定这一点 - 这是一次学习练习还是别的什么,但是作为一个解决方案一次避免:它不容易使它正常工作而不是网络的工作方式'整体。
使用表名前缀将类似于:
决定区分每个用户的方法:也许你可以使用一个带有autoincrement行id的表,并使用行id?也许你有会话登录,可以使用登录名。确保只有'简单'字符在用于表格的id中:例如使用preg_replace()过滤除ASCII字母和数字之外的所有字母。
如果您要创建一个具有常量名称的表格,请添加新的' id'对此:
$sql = "create table csv (" . $fields . ")";
变为:
$sql = "create table csv" . $id . " (" . $fields . ")";
您可能会发现在返回html时保留新ID很有用,所以您也需要安排它。