我有一个基于PHP和MySQL的在线游戏(PHP 5.2.9和MySQL 5.0.91).最近我遇到的问题是,当我在表中删除数千行旧数据时,整个站点有时会冻结.当查询必须等待我假设的表锁并且游戏无法按预期运行时,我也遇到了奇怪的事情发生的问题.
我的所有表都是MyISAM,每秒运行900多个查询.在整个数据库(约150个表)中,88%的查询是读取,只有12%的写入,但是一些表更接近50/50并且每秒从各种客户端读取和写入大量数据(这是一个多人游戏).这些表还可存储1M-5M行.
我知道MyISAM应该读得更快,但InnoDB不必在写入时锁定整个表.我在这里和其他网站上经历了很多主题,但我仍然不确定如何解决这些问题.
我有一个扑克和二十一点游戏,在MySQL数据库中存储一个基卡牌.为了洗牌,我使用ORDER BY RAND()随机订购表格,然后将卡片按顺序插入另一张表格中.使用RAND()会导致玩真实牌和物理混乱的现实赔率,还是这个功能不够随机?
我正在为一个游戏的排名页面工作,我希望首先按胜利排序,然后按损失排序(如果人们拥有相同数量的胜利).以下查询正常工作,以便按顺序列出一个列表,但我不知道如何将损失放入此查询中.
SELECT username, COUNT(id) AS wins
FROM tblBattleHistory
WHERE battle_type = '0' && outcome = '1'
GROUP BY username
ORDER BY wins DESC
Run Code Online (Sandbox Code Playgroud)
结果='1'表示他们赢了,所以当结果='0'时,那意味着他们输了.
我是一个开发人员,一直只是通过FTP开发到开发服务器,然后准备好后将文件转移到生产环境中.我一直对使用git和GitHub很感兴趣,现在我终于找到了一个很好的借口我正在开始一个新项目.但是,这样做似乎很乏味:
git add file1.php
git add file2.php
git commit -m 'updated file1 & 2'
git push origin master
Run Code Online (Sandbox Code Playgroud)
然后在GitHub上的repo中,SSH进入我的服务器,转到正确的目录,并执行:
git pull
Run Code Online (Sandbox Code Playgroud)
每次我对代码进行任何更改.这适用于像Coda这样的编辑,然后只需单击命令+ S.
这样做有更好的(可能更自动化)方式吗?我知道有一个GitHub for Mac应用程序非常好并且有助于第一部分,但我仍然需要登录SSH来更新任何东西,这可能会在一个下午的几十个更新后变得乏味.
我也看到我可以添加一个post-hook,所以我可以调用一个PHP脚本来执行每个提交的git pull,但我觉得可能存在一些安全问题,更不用提问题了该脚本失败,因为它无法输入密码.
我试图找到一种简单的方法来让一个只有文本的div自动垂直滚动文本.我不想使用框架(虽然我确实使用Prototype,所以如果使用Prototype更容易,那么这很好,但没有Scriptalicious).
我假设必须有一种方法可以用几行代码来完成这个,但我对Javascript不太熟悉,知道如何最有效地做到这一点.
我需要为每日cron作业做一个简单的if语句来检查今天是否是本月的第一个星期六.如何修改以下代码而不是每月1日运行?
if (date("j") == 1) {
// run cron here
}
Run Code Online (Sandbox Code Playgroud)