PHP查询实时股票行情

news/2024/11/8 20:11:55/

记录一个实时行情接口,通过PHP查询实时股票行情

php"><?php// Special Note:
// GitHub: https://github.com/alltick/realtime-forex-crypto-stock-tick-finance-websocket-api
// Token Application: https://alltick.io
// Replace "testtoken" in the URL below with your own token
// API addresses for forex, cryptocurrencies, and precious metals:
// https://quote.tradeswitcher.com/quote-b-ws-api
// Stock API address:
// https://quote.tradeswitcher.com/quote-stock-b-ws-api$params = '{"trace":"1111111111111111111111111","data":{"code":"AAPL.US","kline_type":1,"kline_timestamp_end":0,"query_kline_num":10,"adjust_type":0}}';$url = 'https://quote.tradeswitcher.com/quote-stock-b-api/kline?token=testtoken';
$method = 'GET';$opts = array(CURLOPT_TIMEOUT => 10, CURLOPT_RETURNTRANSFER => 1, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false);/* Set specific parameters based on request type */
switch (strtoupper($method)) {case 'GET':$opts[CURLOPT_URL] = $url.'&query='.rawurlencode($params);$opts[CURLOPT_CUSTOMREQUEST] = 'GET';break;default:
}/* Initialize and execute curl request */
$ch = curl_init();
curl_setopt_array($ch, $opts);
$data = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);if ($error) {$data = null;
}echo $data;
?>

这段代码的逻辑可以分为以下几个主要步骤:

  1. 参数设置:首先,定义了一个 JSON 字符串,包含了要查询的股票(如苹果公司的代码 "AAPL.US")和一些其他参数(如 K 线类型、时间戳等)。

  2. 构建请求 URL:指定了请求的 URL,包含 API 端点和一个令牌(token)。该 URL 用于向远程服务发送请求以获取股票的 K 线数据。

  3. 设置 cURL 选项:配置了 cURL 请求的选项,包括:

    • 超时时间设为 10 秒。
    • 返回结果为字符串而不是直接输出。
    • 禁用 SSL 证书验证(可能是为了简化测试环境的设置)。
  4. 请求方法处理:根据指定的请求方法(在此为 GET),将构造好的参数添加到 URL 中。

  5. 执行 cURL 请求

    • 初始化 cURL 会话。
    • 设置请求选项并执行请求。
    • 捕获任何可能的错误。
  6. 输出结果:关闭 cURL 会话后,检查是否有错误。如果没有错误,则输出从 API 返回的数据;如果有错误,则将数据设置为 null。

下面通过Websocket订阅实时股票价格

php"><?php
require_once __DIR__ . '/vendor/autoload.php';use Workerman\Protocols\Ws;
use Workerman\Worker;
use Workerman\Connection\AsyncTcpConnection;// 接口基本信息:
// GitHub: https://github.com/alltick/realtime-forex-crypto-stock-tick-finance-websocket-api
// 官网:https://alltick.co
// 备用网址:https://alltick.io$worker = new Worker();
// When the process starts
$worker->onWorkerStart = function()
{// Connect to remote websocket server using the websocket protocol$ws_connection = new AsyncTcpConnection("ws://quote.tradeswitcher.com/quote-stock-b-ws-api?token=testtoken");// Send a websocket heartbeat opcode (0x9) to the server every 55 seconds$ws_connection->websocketPingInterval = 10;$ws_connection->websocketType = Ws::BINARY_TYPE_BLOB; // BINARY_TYPE_BLOB for text, BINARY_TYPE_ARRAYBUFFER for binary// After the TCP handshake is completed$ws_connection->onConnect = function($connection){echo "TCP connected\n";// Send subscription request$connection->send('{"cmd_id":22002,"seq_id":123,"trace":"3baaa938-f92c-4a74-a228-fd49d5e2f8bc-1678419657806","data":{"symbol_list":[{"code":"700.HK","depth_level":5},{"code":"AAPL.US","depth_level":5}]}}');};// After the websocket handshake is completed$ws_connection->onWebSocketConnect = function(AsyncTcpConnection $con, $response) {echo $response;};// When a message is received from the remote websocket server$ws_connection->onMessage = function($connection, $data){echo "Received: $data\n";};// When an error occurs, usually due to failure to connect to the remote websocket server$ws_connection->onError = function($connection, $code, $msg){echo "Error: $msg\n";};// When the connection to the remote websocket server is closed$ws_connection->onClose = function($connection){echo "Connection closed and trying to reconnect\n";// If the connection is closed, reconnect after 1 second$connection->reConnect(1);};// After setting up all the callbacks above, initiate the connection$ws_connection->connect();
};
Worker::runAll();
?>

这段代码的逻辑可以概括为以下几个关键步骤:

  1. 引入库:使用 Workerman 库来处理 WebSocket 连接和相关功能。

  2. 创建 Worker:实例化一个 Worker 对象,负责管理和启动进程。

  3. 连接设置

    • 在 Worker 启动时,建立与远程 WebSocket 服务器的连接。
    • 配置心跳机制,以定期发送心跳消息保持连接活跃。
  4. 事件处理

    • 连接成功:一旦连接建立,发送订阅请求,告知服务器希望接收哪些金融数据(如特定股票的市场信息)。
    • 接收消息:处理服务器返回的数据,并输出到控制台。
    • 错误处理:在连接出现错误时,输出错误信息。
    • 连接关闭:当连接关闭时,尝试在短暂延迟后重新连接。
  5. 启动 Worker,开始处理所有的事件和消息。


http://www.ppmy.cn/news/1545443.html

相关文章

C/C++语言基础--C++模板与元编程系列三(变量模板、constexpr、萃取等…………)

本专栏目的 更新C/C的基础语法&#xff0c;包括C的一些新特性 前言 模板与元编程是C的重要特点&#xff0c;也是难点&#xff0c;本人预计将会更新10期左右进行讲解&#xff0c;这是第三期&#xff0c;讲变量模板、constexpr、萃取等知识&#xff1b;C语言后面也会继续更新知…

PHP弱类型安全问题

PHP弱类型安全问题主要源于PHP语言的弱类型特性&#xff0c;这种特性允许变量在不同类型之间自由转换&#xff0c;并在比较时进行自动的类型转换。以下是对PHP弱类型安全问题的简述&#xff1a; 一、弱类型特性 在PHP中&#xff0c;变量不需要事先声明类型&#xff0c;且可以…

如何抵御 Linux 服务器黑客威胁和攻击

1 介绍 Linux 服务器以其可靠性和安全性而闻名&#xff0c;这使得它们在企业和个人部署中都很受欢迎。然而&#xff0c;没有哪个系统能够免受攻击。随着网络威胁不断演变&#xff0c;服务器管理员必须采取主动措施来保护其系统免受漏洞和攻击。本指南深入探讨了一系列强化技术和…

【git】使用记录

一、安装 参考&#xff1a;Git2.45.2下载安装记录&#xff08;windows 11&#xff09;_win11安装git-CSDN博客

gitlab-runner中搭建nvm、nrm以及优化maven打包

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 &#x1f38f;&#xff1a;你只管努力&#xff0c;剩下的交给时间 &#x1f3e0; &#xff1a;小破站 gitlab-runner中搭建nvm、nrm以及优化maven打包 git、gitlab-runner如何以gitlab-runner执行nvm、…

【原创】java+ssm+mysql收纳培训网系统设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…

AMD显卡低负载看视频掉驱动(chrome edge浏览器) 高负载玩游戏却稳定 解决方法——关闭MPO

2024.11.7更新 开关mpo ulps 感觉都没啥用&#xff0c;插核显输出也是&#xff0c;只是平时不掉&#xff0c;该玩游戏还得闪退。 今天又装了六七次驱动&#xff0c;现在开着mpo和ulps的情况下居然稳定&#xff1f; 再观望一下&#xff0c;有点摸不着头脑。等11月新驱动. 问题…

【Ajax】跨域

文章目录 1 同源策略1.1 index.html1.2 server.js 2 如何解决跨域2.1 JSONP2.1.1 JSONP 原理2.1.2 JSONP 实践2.1.3 jQuery 中的 JSONP 2.2 CORS2.2.1 CORS实践 3 server.js 1 同源策略 同源策略(Same-Origin Policy)最早由 Netscape 公司提出&#xff0c;是浏览器的一种安全策…