-1

以下是脚本和脚本进行数据共享的常用方式:

cron 作业 -- 计划 --> 主脚本

HTTP 请求 -- 触发器 --> 子脚本

主脚本 --> [数据库] <-- 子脚本

但是他们是否可以使用以下任何一种方式而不是数据库来共享数据?

  • global多变的
  • 系统存储
  • 会话存储
  • memcache / apc / 任何其他类似的东西
4

5 回答 5

1

我第二个文件解决方案:

  • 编码/理解/维护很简单
  • 它是万无一失的,出现问题时您不会丢失内容。
  • 它可以防止并发写入
  • 如果您的操作系统决定需要对其进行缓存以进行频繁访问,则它与内存一样快。(通常不尝试替换操作系统优化更简单/更安全/更快。)
于 2012-07-16T14:40:54.813 回答
1
  1. 不可能
  2. 系统存储是什么意思?
  3. 不可能
  4. memcach:如果两个应用程序都知道值的关键,那将没问题,apc:不可能
于 2012-07-16T14:12:17.823 回答
1

剩下的唯一方法是fs。DaveRandom 建议的套接字或简单文件。

为什么不想使用数据库?你具体想做什么?

于 2012-07-16T14:14:16.960 回答
1

当然,您可以从 cron-job ( php-cli) 执行的脚本连接到 MySQL 服务器,就像您可以从 web 服务器一样,假设php.inifor 命令行已加载数据库库。

如果您不想使用数据库,您可以设置套接字或使用临时直通文件。但是使用数据库将是最有效和最整洁的方式。

于 2012-07-16T14:15:32.770 回答
1
  1. 全局变量 -
  2. 系统存储(来自评论:这是命令行) -,因为这将涉及一个启动另一个,并且仍然是单向的......
  3. session storage -的,使用命名 session,但这将默认使用文件(可以配置为使用shm然后在内存中......)
  4. memcached-是的
  5. apc-的,但需要显式配置才能在cli sapi中启用
  6. 文件 -的。为了加快速度,您可以使用ramfs将文件存储在内存文件系统中。
  7. 套接字 -的(创建一个监听器并从另一个连接)
  8. 数据库 -的(实际上,为什么不呢?)

如果我遗漏了任何内容,您可以搜索php interprocess communication

于 2012-07-16T14:22:20.293 回答