我写了一个小聊天框小部件,它每秒运行一次ajax调用,以获取已发布的新消息.问题是它正在泄漏内存,只有大约15分钟的打开后它会崩溃我的浏览器(Firefox).
这可能是我,因为我是一个相对新手,我敢肯定我错过了一些东西或者没有让我的变量等等.
var chat = {}
chat.fetchMessages = function() {
$.ajax({
url: '/chat_ajax.php',
type: 'post',
data: { method: 'fetch'},
success : function(data) {
$('#chat .messages').html(data);
$("#chat").scrollTop($("#chat")[0].scrollHeight);
}
});
}
chat.interval = setInterval(chat.fetchMessages, 1000);
chat.fetchMessages();
Run Code Online (Sandbox Code Playgroud)
有人可以看一下我的(基本)代码,看看你是否能找到内存泄漏发生的地方,以及我做错了什么?我是否需要取消某些变量或其他内容?
非常感谢!
我正在努力寻找/创建一个可以确定随机5个字母组合的可读性的算法.
到目前为止,我发现的最接近的是来自这个3岁的StackOverflow线程:
<?php
// Score: 1
echo pronounceability('namelet') . "\n";
// Score: 0.71428571428571
echo pronounceability('nameoic') . "\n";
function pronounceability($word) {
static $vowels = array
(
'a',
'e',
'i',
'o',
'u',
'y'
);
static $composites = array
(
'mm',
'll',
'th',
'ing'
);
if (!is_string($word)) return false;
// Remove non letters and put in lowercase
$word = preg_replace('/[^a-z]/i', '', $word);
$word = strtolower($word);
// Special case
if ($word == 'a') return 1;
$len = strlen($word);
// Let's not parse an …
Run Code Online (Sandbox Code Playgroud) 可能是一个新手问题,但我是自学成才的,我正在尝试编辑一些超出我的舒适区域的代码,并且不会出现问题.请帮忙!
它是一个从MySQL数据库中选择数据并返回数组的函数.它使用其他几个"核心"函数来帮助建立数据库连接.
原始脚本如下所示:
class Core{
protected $db, $result;
private $rows;
public function __construct() {
$this->db = new mysqli('localhost', 'root', 'password', 'db');
}
public function query($sql){
$this->result = $this->db->query($sql);
}
public function rows(){
for($x = 1; $x <= $this->db->affected_rows; $x++){
$this->rows[] = $this->result->fetch_assoc();
}
return $this->rows;
}
}
class Chat extends Core{
public function fetchMessages(){
$this->query("
SELECT `chat`.`message`,
`users`.`username`,
`users`.`user_id`
FROM `chat`
JOIN `users`
ON `chat`.`user_id` = `users`.`user_id`
ORDER BY `chat`.`timestamp`
DESC
");
return $this->rows();
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,在Chat类的fetchMessages()函数中有一个SELECT子句,它将"chat"表与"users"表连接起来以获取用户名.如果由于某种原因(删除,禁止,退出等),用户表中不存在用户ID,则SELECT子句不返回任何结果.
为了在用户不存在的情况下它仍然返回消息,我想我需要将JOIN分成2个SELECT CLAUSES:
首先,SELECT …