- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用 PHP 的 APC 来存储大量信息(使用 apc_fetch()
等)。这些信息有时需要分析并转储到别处。
据说,我每秒获得数百次点击。这些命中增加了各种计数器(使用 apc_inc()
和 friend )。每小时,我都想遍历我积累的所有值,并对它们进行一些其他处理,然后将它们保存在磁盘上。
我可以在每个请求中将其作为随机或基于时间的切换来执行此操作,但这可能是一个很长的操作(可能需要 20-30 秒,如果不是几分钟的话)并且我不想将请求挂起那么久.
我认为一个简单的 PHP cronjob 就可以完成这项任务。但是,我什至不能让它读回缓存信息。
<?php
print_r(apc_cache_info());
?>
产生一个看似不同的 APC 内存段,其中:
[num_entries] => 1
(单个条目似乎是它自己的操作码缓存)
虽然我的网络服务器由 nginx/php5-fpm 提供支持,但产量:
[num_entries] => 3175
因此,它们显然没有共享同一 block 内存。我怎样才能访问 CLI 脚本中的相同内存块(首选),或者如果这根本不可能,那么执行长时间运行的序列(例如每小时随机 HTTP 请求)的绝对最安全的方法是什么?
对于后者,将使用 register_shutdown_function()
并立即 set_time_limit(0)
和 ignore_user_abort(true)
来确保执行完成并且不会“挂起”任何人的浏览器?
是的,我知道 redis、memcache 等不会有这个问题,但我现在坚持使用 APC,因为它们都无法展示与 APC 相同的速度。
最佳答案
这实际上是一个设计问题,是选择首选成本与 yield 的问题。
您对 APC 的速度感到非常兴奋,因为您不需要花时间来持久化数据。您还想保留数据,但现在对性能的影响太大了。你必须以某种方式平衡这些。
如果持久性很重要,请在每个请求上进行命中和持久化(文件、数据库等)。如果您只关心速度,那么什么都不改变——这整个问题就变得没有实际意义了。存在具有持久存储的缓存系统,可以通过聚合写入磁盘的内容和时间来优化磁盘写入,但您通常总是会在具有不同临界点的两者之间获得返回。您只需从中选择适合您的目标即可。
可能永远不会存在一个持久的、有益健康的技术解决方案来让狼吃饱而羔羊完整。
如果您真的必须按照自己的方式来做,您可以有一个 cron,它向您的应用程序发送一个特殊请求,这将触发将您的缓存持久保存到磁盘。这样您就可以控制请求、它的超时等,并且不必担心用户可能会做的所有事情来终止他们的请求。
然而,这种情况下的潜在风险是数据完整性(因为您将缓存写入磁盘,同时其他请求正在更新缓存)以及在持久缓存支付服务器繁忙导致性能下降。
本质上,我们在狼/羊困境中引入了一捆干草 ;)
关于apc - 如何在 CLI 和 Web Server 实例之间共享 APC 用户缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14221836/
我在全局范围内安装了最新的 angular-cli,并且我的项目正在成功构建。 在阅读另一个问题的建议解决方案时,(https://github.com/angular/angular-cli/iss
根据official docs关于 .angular-cli.json 配置文件,仅支持 main、test、polyfills 作为 webpack 入口文件。 如何通过定义 .angular-cl
我想在s3存储桶中搜索文件名abc.zip,并且有将近60个存储桶,每个存储桶都有2到3个级别的子目录或文件夹。我尝试使用AWS CLI命令执行搜索,以下是我尝试过的命令,但即使文件存在于存储桶中,也
我正在尝试在 C++/CLI 中查找赋值运算符和复制构造函数的示例。我在 Google 上花了很多时间,但令人惊讶的是我找不到一个看起来很常见的例子。 最佳答案 .NET 语义没有复制构造函数或赋值运
我需要获取另一个窗口的句柄。 这是它的代码: private: System::Void btn_find_Click(System::Object^ sender, System::EventAr
有点好奇实际上有多少人使用 C++/CLI?那么有多少人在使用它呢?人们是否只在托管环境下寻找程序员的特定工作?围绕 c++/cli 的社区有多大?从我目前看到的情况来看,有不少语法变化,作为 C++
我正在阅读一些 C++/CLI Material ,并且遇到了文字字段的概念: literal int inchesPerFoot = 12; 这是否比 const 更可取,因为 const FIEL
通过 npm install -g angular-cli@latest 安装 Angular CLI (angular-cli@1.0.0-beta.16) 失败,出现以下错误 npm-debug.
我正在尝试在我的 Ember CLI 应用程序中配置适配器以根据环境使用不同的主机。在开发中,我希望它是默认的当前主机(让我通过 --proxy 选项自定义它,但在生产中我知道它将是 http://s
我最近开始使用 Angular/CLI 工具,我在执行文件时遇到了一个问题,那就是我运行时 ng serve 那么这个命令可以帮助我们在源文件中进行任何更改时自动重新加载站点,但在我的系统中它没有发生
是否有推荐的方法通过 c++ cli 包装 native c++ 库? 最佳答案 不确定是否一种尺寸适合所有人,但是,是的,这很大程度上是一个机械过程。您的 ref 类包装器应该声明一个私有(priv
我有一个关于为要在 C# 中使用的 native C++ 类创建 C++ CLI 包装器的问题。 这是一个示例代码: #include "stdafx.h" #pragma once using na
下面的代码打印 0 和 3。这是代码生成错误吗?我在 .NET 4.0 下使用 Visual Studio 2012 Update 3 RC 运行它 #include "stdafx.h" using
它是如何工作的?它是否有不同的部分 - 有些方法是托管的,有些是非托管的,它是否将每个方法都转换为托管的,试图保持所有东西都处于托管状态并在必须时进行互操作调用? 最佳答案 三种不同的compiler
如果我没记错的话,函数必须是 CLR 世界中类的成员,而全局函数在 C++/CLI 中是可能的。这是否意味着这些全局函数是某种隐藏的“全局”类的一部分?如果是这样,出于反射目的,人们将如何获取其类型?
如何在 Angular 中重建我的项目。我首先使用 ng build 构建它,但无法再次执行该命令,因为它不会让我更改文件夹。 我收到此错误消息: EPERM:不允许操作,lstat 是否有另一个命令
我遇到了两个相互引用的类的问题。我曾尝试使用接口(interface)来解决问题,但遇到了其他问题,例如类重新定义。我只是不确定如何正确执行此操作。 这是我正在做的事情的一个例子。注意:我已经去掉了所
我是 React.js 的新手,我正在尝试从 tutorialspoint 上的教程中学习但我遇到了错误。这是我执行 npm start 命令时控制台上的错误: C:\Users\HP\Desktop
我正在尝试将我的 angular cli 和 angular core 从 12 升级到 13,但看起来存在对等依赖性问题。有人遇到过这个问题吗? npx @angular/cli@13 update
我正在我的 ubuntu 上安装 influxdb_2.0.9,我按照这里的说明操作: https://docs.influxdata.com/influxdb/v2.0/install/?t=Lin
我是一名优秀的程序员,十分优秀!