- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我调用 AJAX 来检查数据库是否每 3 秒或 10 秒有新通知,同时来自 4 个不同浏览器的相同查询。但是在循环 100+ 之后的某个时刻,服务器返回错误 508(检测到循环)。这只是一个简单的站点,所以我认为我不需要 VPS 服务器。
我在SELECT中添加了timestamp作为query differentiator,put unset, flush, mysqli_free_result, pause, mysqli_kill, mysqli_close,但是还是报错。进入流程达到 20/20。
脚本
var counter = 1;
var notiftimer;
$(document).ready(function() {
ajax_loadnotifs();
});
function ajax_loadnotifs() {
$.ajax({
type: "post",
url: "service.php",
dataType: "json",
data: { action:'loadnotifs' },
success: function(data, textStatus, jqXHR){
$("div").append($("<p>").text(counter++ + ": succeeded"));
notiftimer = setTimeout(function() {
ajax_loadnotifs();
}, 3000);
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(jqXHR.responseText);
}
});
}
service.php
$link = mysqli_connect('localhost', 'root', 'root', 'testdb');
$notifs = array();
$query = "SELECT id, message FROM notifs LIMIT 20";
if (!$temp_notifs = mysqli_query($link, $query)) {
die(json_encode(array("errmsg" => "Selecting notifs.")));
}
while($notif = mysqli_fetch_assoc($temp_notifs)) {
$notifs[] = $notif;
}
mysqli_close($link);
echo json_encode($notifs);
cPanel - 资源使用概览
当输入进程达到 20/20 时,我收到错误 508。如何保持较低的服务器输入进程? (测试了 4 种不同的浏览器,在共享主机上运行它们直到循环 100+。在本地计算机上没有问题)
最佳答案
What is considered an Entry Processes?
An "Entry Process" is how many PHP scripts you have running at a single time.
来源:https://billing.stablehost.com/knowledgebase/186/What-is-considered-an-Entry-Processes.html
因此,正如您发现的那样,潜在的问题最终是您同时运行了太多进程。您可以采取一些措施来解决该问题。
选项 1
寻找新的虚拟主机。这可能是最简单但也是最昂贵的,具体取决于您与当前房东的财务安排。找一个没有这个限制的。
选项 2
增加 ajax 请求之间的时间。为什么需要每 3 秒请求一次?那是非常非常短的时间。 15秒呢?还是30秒?或者见鬼,甚至 1 分钟?您的用户可能不需要像您想象的那样频繁地刷新数据。
选项 3
仅当当前选项卡/窗口处于焦点时才执行 ajax 调用。如果用户甚至没有查看您的页面,就没有理由继续轮询通知。
查看 Document.hasFocus()
: https://developer.mozilla.org/en-US/docs/Web/API/Document/hasFocus
选项 4
实现缓存层。如果你觉得你仍然需要非常非常频繁地请求数据,那么提高你检索这些数据的速度。如何实现缓存取决于您,但在某些情况下,即使使用文件写入/读取也可以减少完成请求所需的时间和资源。
从数据库中获取通知后,只需将 JSON 保存到文本文件中,然后从那里发送后续请求,直到数据库数据发生变化。看看这是否会提高性能。
如果您想更加专注于缓存,您可以考虑 Memcached (https://en.wikipedia.org/wiki/Memcached) 或 Redis (https://en.wikipedia.org/wiki/Redis) 等选项。
尝试组合多个选项以获得更好的性能!
关于php - 重复通知检查触发错误 508(检测到循环),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46190422/
我有一个应用程序应该在应用程序处于前台和后台(不在历史记录中)时显示提醒通知。 在前景情况下,我通过以下方法实现了这一点。 PendingIntent pendingIntent = PendingI
如何为我的 WPF 应用程序创建通知,例如浏览器上的通知,它们通过浏览器顶部的“工具栏”显示消息或通过在右下角向上/向下滑动的弹出窗口显示“MSN”样式通知屏幕。也许在应用程序中心淡入/淡出的面板可以
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 9 年前。 Improve
我正在使用 Redis 作为分布式缓存。我有不同的应用程序,它们只听特定的键。例如:App1 听 App1.*App2 监听 App2.* 等等。 我的应用程序使用以下模式接收通知:App1:“ ke
我正在尝试构建一个基于官方节点 docker 镜像的 docker 镜像,我想知道是否有某种方法可以在推送新版本的官方节点镜像时自动重建镜像。这样我的图像就不会基于过时的基础图像。 也许有类似 rss
我在一个项目中工作,我需要在添加或修改文件时在数据库中记录文件信息,以便它们保持同步。这些文件应该存储在 Nextcloud 服务器中,那么 Nextcloud 是否有办法通知这些更改(例如 webh
通知类中的方法via 如何根据用户的偏好动态变化,一个用户可能想通过电子邮件接收,而另一个用户则不想 public function via($notifiable) { return ['d
我有一个应用程序,我正在发送推送通知,如果用户登录到应用程序,这很好 - 但是,如果他们没有/如果他们没有在 X 分钟内阅读通知,我想给他们发送一封电子邮件. 我要解决的方法是使用 Laravel N
我正在使用 Django 的 contrib.comments 并想了解以下内容。 是否有任何实用程序或应用程序可以插入到某个应用程序中,当对某个项目发表评论时向您发送通知? 我并没有真正使用过那么多
我希望用户在启动应用程序之前接受协议(protocol)。所以在 appDelegate.m 中我有以下内容: - (BOOL)application:(UIApplication *)applica
我正在创建一个新指令,我想知道如何在 angular 从 DOM 中删除元素时收到通知。 我的目标是在删除元素时添加 jquery 动画。 最佳答案 如果您尝试对元素的移除进行动画处理,则需要在移除元
我正在编写一个应用程序,其工作方式与Apple的Weather.app非常相似:底部有一个UIPageControl,屏幕中间有一个UIScrollView。在我的代码中,我实现了 - (void)s
如何查明 iPhone 注册了哪些通知? 例如: notify_post("com.apple.springboard/Prefs"); 最佳答案 虽然这个问题的答案已经得到确认,但由于 @Nate
我的 Cocoa 应用程序中有一个 TextField。该文本字段有时会被填充,有时会为空。 我希望当字段为空时按钮被禁用。现在,每当我对 Core Data 执行某些操作时,我都会检查该字段,Tex
我的应用程序在其数据库中包含文档。用户可以打开文档,在这种情况下,文档将保存到临时文件夹并在用户计算机上打开。 我希望在这些临时文件之一发生更改时收到通知,并让用户将更改后的文档保存回数据库。 在 D
我目前正在开发一个网络应用程序,它不断对 php 进行 ajax 调用(轮询),以从数据库中提取新的“任务”,有点像 gmail/facebook 检查新电子邮件和消息的方式。当前的 JavaScri
我正在尝试让通知适用于我使用 Angular 5 和 Electron 制作的 Electron 应用程序。到目前为止,我的 index.html 文件中有以下代码: function doNo
我有一个录音/播放应用程序。它在后台运行。当它进入后台时,如果任何其他音频应用程序打开或开始使用音频资源,我想适本地处理我的应用程序。 iOS 提供了一种发送此类通知的方法,如在 ipod 播放器中看
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 4 年前。 Improve this ques
是否有 Subversion 的工具可以在对某些文件提交更改时自动通知我? 最佳答案 您可以创建一个 post-commit hook script “ Hook ”提交。 在钩子(Hook)脚本中,
我是一名优秀的程序员,十分优秀!