在特定日期时间从 Oracle 数据库中检索数据,然后在 php 中将它们发布到 firebase
Posted
技术标签:
【中文标题】在特定日期时间从 Oracle 数据库中检索数据,然后在 php 中将它们发布到 firebase【英文标题】:Retrieve data from Oracle Database at specific datetime then post them to firebase in php 【发布时间】:2017-12-17 06:40:45 【问题描述】:描述项目构想:
我正在开发在 Oracle 数据库 8i 版本上运行的系统。我想执行一个每月自动运行的查询(使用php或java)以检索下个月某些用户的到期付款数据,然后将这些数据发布到google Firebase。
描述我的问题:
我想知道如何在每个月的特定日期自动执行查询,而不是通过单击按钮手动运行代码或手动运行脚本。用于从 Oracle 检索数据和将数据发布到 Firebase。但不要通过永远循环来过度使用服务器上的处理器。
我不知道是否可以在php代码中完成,或者我应该使用外部程序或服务在特定时间自动运行我的功能
示例伪代码:
一个非常简单的例子来解释我的过程,实际的代码会更有条理。非常感谢您的想法
// some Proramming language API to call myFunction() automatically
/* this is what I need */
// check date
if (today() = 20-currentMonth-currentYear)
(
myFunction()
)
function myFunction()
//conneting to database
connect to oracle(connectionURL, username, password)
// running connection
run connection
// executing updated query
execute query(Select * from tableName where date 01-nextMonth-currentYear)
// fetching query results
Loop throw query result
// prepare JSON format
add result to json(object or array)
// close database connection
close oracle connection
// sending json to firebase
send json result to Firebase RestAPI
编程语言:
PHP
【问题讨论】:
嗨,我认为您可以创建一个简单的 jar/java 程序,它可以使用crontab(linux,unix)
或 task scheduler(windows)
来执行整个过程并安排运行该程序,这两者都已经内置在各自的系统中& 非常灵活地以 x 间隔、y 时间运行作业。这比设计自己的 cron 调度程序更有效。
这是一个不错的方法,我会尝试整个过程
【参考方案1】:
天哪,8i?那是一个古老的软件。
无论如何:您不需要 PHP 也不需要外部程序 - 您所需要的只是在数据库中安排的作业。 DBMS_JOB 应该这样做。这是该软件包的 8i 文档:https://docs.oracle.com/cd/A87860_01/doc/server.817/a76956/jobq.htm#5727
这是一个如何做到这一点的示例:
SQL> set serveroutput on
SQL> -- creating a dummy procedure; yours would collect data
SQL> create or replace procedure p_test
2 is
3 begin
4 null;
5 end p_test;
6 /
Procedure created.
SQL> -- schedule a job. NEXT_DATE says when it is executed for the first time,
SQL> -- while INTERVAL says when to re-execute it -> monthly, on 5th of every month,
SQL> -- at 14:30
SQL> declare
2 x number;
3 begin
4 sys.dbms_job.submit (
5 job => x,
6 what => 'p_test;',
7 next_date => to_date ('05.12.2017 14:30:00', 'dd.mm.yyyy hh24:mi:ss'),
8 interval => 'add_months(to_date(''05.12.2017'', ''dd.mm.yyyy''), 1) + 14 / 24 + 30 / (24*60)',
9 no_parse => false);
10 sys.dbms_output.put_line ('Job Number is: ' || to_char (x));
11 commit;
12 end;
13 /
Job Number is: 2895612
PL/SQL procedure successfully completed.
SQL> -- check job info
SQL> select * from user_jobs where job = 2895612;
现在,这就是收集数据的方法。不幸的是,我不知道如何将它转移到 Firebase(如果必须,我会提到以下关键字:数据库链接、异构服务。或者,当然是谷歌)。希望其他人能够提供帮助。
【讨论】:
非常感谢您的帮助,让 Oracle 每月创建数据是我的计划,然后我将创建的作业上传到 Firebase,我关心的是每月运行我的脚本(php ) 或任何其他语言将我的数据上传到 Firebase。实际上,@pOrinG 先生提出了一个不错的方法,我会尝试一下以上是关于在特定日期时间从 Oracle 数据库中检索数据,然后在 php 中将它们发布到 firebase的主要内容,如果未能解决你的问题,请参考以下文章