问题标签 [php-socket]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - socket_read() 无法从对等 php 重置的套接字 104 连接中读取
我正在从 php 套接字中的 gps 设备获取数据。设备已连接到服务器,但套接字无法读取数据并给出如下错误:
socket_read() 无法从对等方重置的套接字 104 连接中读取
我的套接字代码:
我的代码工作正常,它连接到设备,但是当我尝试使用数据读取数据时,socket_read()
数据为空或未读取错误。我也试过socket_recv()
了,但仍然没有得到数据,或者我得到了同样的错误。
php - 为什么 php 在尝试连接到本地套接字服务器时会挂起?
php版本:
os 是 ubuntu 服务器版本 18.04。
我用php cmd试过了。
服务器代码,输出为“BEFORE CONNECT”:
客户端代码:
问题是客户端脚本与 socket_connect() 函数一起挂起,一段时间后我得到:
但是在我本地的 Ubuntu 18.04.3 LTS 上它可以工作。PHP 也是一样。
我还尝试在外部 ip 上创建服务器并从外部访问它,结果相同 - 它挂起。但是,如果我在客户端将端口更改为错误 - 我会立即收到警告:Warning: socket_connect(): unable to connect [111]: Connection refused in
ubuntu 中添加了以下配置:
和:
其中一些配置是否有可能使 socket_connect 挂起?
啊,防火墙状态是inactive
,检查sudo ufw status
相同的代码适用于其他 2 个具有相同 PHP 编译的相同 ubuntu 安装。
顺便说一句,mysql 和 apache2 在那台机器上运行良好。
看起来服务器脚本不接受连接,我的意思是这段代码socket_accept($sock)
,因为我尝试连接客户端 php 脚本,尝试连接 telnet,并且我尝试在外部 IP 上创建服务器,当我尝试连接它时从我的另一台计算机 - 同样的情况,socket_connect 挂起。好像服务器不接受连接..
我还尝试了非阻塞模式的 php 套接字服务器:
因此服务器每 1 秒尝试接受一次连接。但还是一样的结果((
这很疯狂,因为如果我按以下方式创建服务器,它可以工作:
还有一点,类比 Python 脚本运行良好!
Python服务器:
Python客户端:
但为什么 PHP 不起作用?可能是什么问题?
PHP重新编译没有帮助((
laravel - laravel 前端排队作业的实时进度
我在 laravel 5.8 中工作,我有一个按钮可以启动数据库中的队列作业,并立即开始发送(实际上是数千封电子邮件)。
现在,我想用一些状态栏或进度条(实时)监控前面队列的进度。
我知道,我有几个选择是 Pusher、Websocket、Laravel Echo。
但我对选择解决方案有点困惑,因为它也涉及数据库表。
请指导我,TIA!
php - windows 的 php_serial.class.php 中指定的串口无效
我尝试使用 php_serial.class.php 将 NV200 智能支付设备连接到我的 php 项目,但出现此错误:
指定的串口在第 145 行的 D:\xampp-7\htdocs\testsocket\php_serial.class.php 中无效
我正在使用 Windows 7 并检查到设备管理器,设备连接到 COM3。这是我的代码:
出了什么问题?连接串口的正确方法是什么?请帮忙。
php - PHP Websocket 失败:WebSocket 握手期间出错:net::ERR_CONNECTION_CLOSED(匿名)
我在 PHP 中学习 websocket,但我不知道为什么会有这个握手错误。
我的 client.html :
和 server.php :
但是,我遵循了关于握手的 Mozilla 文档:/
谢谢你。
websocket - 基于 SSL TIMEOUT 的 Websocket 握手
我的网站通过 https(Using Let's Encrypt) 在共享主机上运行。它使用 Ratchet 实现 websocket,如下所示
当客户端尝试连接时
在 localhost 上,它工作正常。
但是当使用 wss 在 Web 服务器上尝试相同时
它在 15-20 秒后超时。我在实施中有什么遗漏吗?
php - PHP 作为客户端连接到 NodeJS Web 套接字
需要我的 laravel 应用程序连接到基于 nodejs 的套接字服务器。该函数需要传递自定义标头以进行身份验证,并每 1 分钟 ping 一次连接,以防止与套接字服务器断开连接
任何人都可以推荐任何好的库来实现上述功能。在这里,PHP 充当客户端
提前致谢
php - 使用 PHP 进行套接字编程并将数据插入数据库(续)
我有多个 GPS 设备。我无法对此设备进行更改。它将数据发送到端口。
我打破这个传入的数据并根据其类型将其插入数据库。但有时我会遇到问题。设备有时会发送 id_number 字段为空白。它正确发送所有其他数据。有时程序会崩溃。
我希望它 24/7 运行,并且只在出现问题时重新启动该套接字。或者我想一次获取设备的 id_number 字段并一遍又一遍地使用它。由于有多个设备,因此为每个设备打开一个单独的套接字。但是当设备的 id_number 为空时,我无法将数据插入数据库。我怎么解决这个问题?
简而言之,当一个套接字正常发送数据时,一段时间后它开始发送空白 id_number 并且我丢失了数据,直到我重新启动程序。其他设备继续工作。
我有两个选择。
第一个选项:当 id_number 为空时重新启动套接字。
第二个选项:当 id_number 为空时重新启动套接字。
但我不知道如何做这些。
另一个问题或捷径是在程序发生错误时再次运行代码。我怎样才能做到这一点?
注意:我在 Centos 7 中运行一个带有服务的 php 程序。
sockets - 如何在 VPS 上运行需要套接字的 2scripts?
我有两个类似的脚本需要一个套接字才能运行。这些脚本中的每一个都必须在 VPS 上的帐户上执行。
例如:
domain1.com:1234 --> domain1/public_html/socket/socket.php
domain2.com:4321 --> domain2/public_html/socket/socket.php
但是当为域 1 执行套接字并执行脚本时,第二个脚本不适用于套接字。
如何在一个 vps 上运行两个或多个脚本,而无需购买两个 vps?
我的 VPS 详细信息:
Centos 7.9
直接管理员
php-fpm 5.6、7.0、7.3
tnx
php - 需要帮助在 php 中调试 socketServer
几个月前,我需要创建一个实时表格来显示网站中访问者的行为。所以我开始通过谷歌搜索并使用其他人编写的一些代码来学习 php 中的套接字编程。结果是创建了这两个文件,帮助我实现了我所需要的。
但是由于某些未知原因,有时套接字服务器会停止接受新连接,尽管我可以看到它仍在我的服务器进程中运行。这种情况每月只发生一次或两次,我不得不终止该过程并重新启动它。该网站每天有大约 1500 名访问者,每个人在网上停留大约 2-10 分钟并填写一些表格,我们将在实时表格上看到他们的行为。
我有两组不同的客户端连接到该服务器。第一个是可以看到实时表格的版主,第二个是我的 Web 应用程序发送数据包以更新表格中的信息,每当访问者进行一些更改或做一些事情时。
我在 ssh 中使用screen命令来运行该进程。
所以我需要的是找到一种方法来调试它并找到问题。或者也许有人可以通过阅读我的代码在这里找到问题。
套接字.php:
和 socket-server.php :
我的 Web 应用程序将使用此函数将数据包发送到套接字服务器:
这也是我用于版主连接到套接字服务器的 js 代码: