php - 来自 PHP 的 XMLHttpRequestProgressEvent 操作

标签 php javascript c ajax xmlhttprequest

我正在努力解决这个问题:我有一个 Web 界面,它使用套接字连接到某些路由器板上运行的各种 C 程序。每次 C 应用程序通过套接字发送内容时,PHP 应用程序都会接收到它。 对于一次性请求,一切都完美无缺,但有一种情况,每次 C 应用程序发送更新时,我都需要更新浏览器上的界面,直到它结束其任务。我可以通过对处理与 C 应用程序通信的 PHP 脚本使用 jQuery.ajax 调用来成功启动该过程,并且我已经设法在每次更新后将 XMLHttpRequestProgressEvent 发送回客户端每次脚本通过它向 C 应用程序打开的套接字接收到一些东西时,向 PHP 输出缓冲区写入一些东西并刷新它。事情是,我想向 XMLHttpRequestProgressEvent 添加一些有意义的数据,通过检查它我可以看到它同时具有 targetsrcTarget 属于 XMLHttpRequest 的属性。我认为其中之一的 responseText 将是缓冲区的内容,但事实并非如此。

所以我的问题是:如何将数据封装在 PHP 的 XMLHttpRequestProgressEvent 中,是否有比使用 flush 发送该事件更好的方法?

部分代码:

C

pipe = popen(command, "r");

while(!feof(pipe)) {
if(fgets(buffer, 128, pipe) != NULL)
    printf("%s\n", buffer);
    tcp_send(currentHandler, buffer);
}

pclose(pipe);

(是的,我实际上执行了另一个进程并发回了输出,至少现在是这样)。

PHP

$done = false;

while(!$done) {
$buffer = socket_read($socket, 128);

if (!$buffer || $buffer == "")
    $done = true;

        // I'd like to send back the value of $buffer as well!

    echo ".";
    flush();
}

JavaScript

$.ajax({
    url: 'myScript.php',
    type: 'post',
    dataType: 'json',
    data: {action: 'runTest', ajax: true},
    success: function(data, status, xhr) {
        console.log('Aye!');
    },
    progress: function(e) {
        console.log(e);
    },
    error: function(xhr) {
        console.log('Nay!');
        console.log(xhr);
    }
});

(当然我扩展了 jQuery.ajax 来处理进度事件)

更新 根据 W3C specification进度事件只能有 lengthComputabletotalloaded 值。很公平。我仍然希望能够设置它们各自的值:)

最佳答案

试试 Node.js 也许它对你有用

关于php - 来自 PHP 的 XMLHttpRequestProgressEvent 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16483409/

相关文章:

javascript - 使用 javascript/jquery 删除特定字符后的文本

javascript - Grunt requirejs 将 require 模块连接并压缩到一个文件中

c - 为以下代码分配了多少空间?

c - 搜索 -lMY_LIB 时跳过不兼容的 lib_share.so 找不到 -lMY_LIB

php - 在 PHP 生成后使用 CSS 在主要类别旁边显示子类别

php - 在 PHP setuid 脚本中获取主叫用户 ID

php - NGINX: connect() to unix:/var/run/php7.2-fpm.sock 失败(2:没有这样的文件或目录)

php - 如何将 select 中的内部查询转换为 Eloquent laravel 5.4

c - MISRA 相当于医疗行业?

javascript - 我需要帮助使正则表达式正确 2