我用 php 和 MySQL 编写了一个基本的网络应用程序,它使用查询字符串来查找各种信息。例如:xxxxxxx.com/?profile=1245
非常基本的、初次开发的网络应用类型。
我想创建不同的帐户,每个帐户都有自己的数据集。我想通过使用子域来区分这些帐户。例如:username.xxxxxxxx.com?profile=4527
我在我的 Apache 配置中设置了一个 catchall 以将所有子域转移到我的主域,然后我可以像这样使用 php 拉出该子域:
<?php list( $username ) = explode( ".", $_SERVER[ "HTTP_HOST" ] ); ?>
现在,这是我的问题:
在我看来(我对所有这一切都相当陌生)对我需要在每个页面上执行的每个查询执行基于字符串的搜索将是缓慢且低效的。例如,必须查找 SELECT * WHERE username = sampleuser AND profile = 2745
但这是真的吗?什么是最有效的方法?使用子域的 Web 应用程序通常如何处理此类事情?
在此先感谢大家。
最佳答案
使用子域名效率不高。当您查看 SEO 时。您有许多具有相同内容的域和网站。
我更愿意重写你的情况
www.xxxxx.com/username
然后您可以将用户名重写到您的脚本中。问题是当您为每个用户创建一个新的子域时可能会出现问题。可能是用户缓存了 DNS 请求,因此访问该站点需要花费大量时间。
第二个是你应该尽可能少地查询数据库。在 session 中保存用户名或 ID。
$_SESSION['username'] = 'username';
然后您可以进行查询以从您的数据库中获取信息。
编辑:当您需要更高的性能时,您应该看看 MongoDB 或使用 Memcache 来存储/缓存内容。
关于php - 使用 PHP 在 MySQL 中查找帐户名的最有效方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13963267/