相关疑难解决方法(0)

PHP有线程吗?

我发现这个PECL包叫做线程,但还没有发布.PHP网站上没有任何内容.

php apache multithreading command-line-interface

129
推荐指数
10
解决办法
13万
查看次数

早点关闭连接

我正在尝试进行AJAX调用(通过JQuery),这将启动一个相当长的过程.我希望脚本只是发送一个响应,表明进程已经启动,但是在PHP脚本运行完毕之前,JQuery不会返回响应.

我用"关闭"标题(下面)尝试了这个,还有输出缓冲; 似乎都不起作用.任何猜测?或者这是我在JQuery中需要做的事情?

<?php

echo( "We'll email you as soon as this is done." );

header( "Connection: Close" );

// do some stuff that will take a while

mail( 'dude@thatplace.com', "okay I'm done", 'Yup, all done.' );

?>
Run Code Online (Sandbox Code Playgroud)

php ajax jquery

96
推荐指数
5
解决办法
6万
查看次数

如何在PHP中创建异步GET请求?

我希望对另一台服务器上的另一个脚本发出一个简单的GET请求.我该怎么做呢?

在一种情况下,我只需要请求外部脚本而无需任何输出.

make_request('http://www.externalsite.com/script1.php?variable=45'); //example usage
Run Code Online (Sandbox Code Playgroud)

在第二种情况下,我需要获取文本输出.

$output = make_request('http://www.externalsite.com/script2.php?variable=45');
echo $output; //string output
Run Code Online (Sandbox Code Playgroud)

说实话,我不想乱用CURL,因为这不是CURL的工作.我也不想使用http_get,因为我没有PECL扩展.

fsockopen会工作吗?如果是这样,如何在不读取文件内容的情况下执行此操作?没有其他办法吗?

谢谢大家

更新

我应该补充一下,在第一种情况下,我不想等待脚本返回任何内容.据我所知,file_get_contents()会等待页面完全加载等?

php curl asynchronous http

94
推荐指数
6
解决办法
11万
查看次数

发送http响应后继续处理php

我的脚本由服务器调用.从服务器我会收到ID_OF_MESSAGETEXT_OF_MESSAGE.

在我的脚本中,我将处理传入的文本并使用params生成响应:ANSWER_TO_IDRESPONSE_MESSAGE.

问题是我正在向incomming发送响应"ID_OF_MESSAGE",但是在收到http响应200之后,向我发送消息的服务器将把他的消息设置为发送给我(这意味着我可以发送给他的响应).

解决方案之一是将消息保存到数据库并制作一些将每分钟运行的cron,但我需要立即生成响应消息.

是否有一些解决方案如何发送到服务器http响应200而不是继续执行PHP脚本?

非常感谢

php http response

91
推荐指数
7
解决办法
6万
查看次数

PHP线程异步调用php函数

我要做的是从数据库或从memcache异步加载一些数据.

我知道我知道."PHP不支持线程".

但是register_tick_function怎么样?这不是真正的线程吗?

有没有人使用register_tick_function进行任何预测预加载或任何后台处理?

php

45
推荐指数
1
解决办法
10万
查看次数

如何在PHP/MySQL应用程序中充分利用多核CPU?

我维护一个自定义的类似CMS的应用程序.

每当提交文档时,都会执行几项任务,这些任务可以大致分为以下几类:

  1. MySQL查询.
  2. HTML内容解析.
  3. 搜索索引更新.

类别1包括与文档内容相关的各种MySQL表的更新.

类别2包括解析存储在MySQL LONGTEXT字段中的HTML内容以执行一些自动锚标记转换.我怀疑在这项任务中花费了大量的计算时间.

类别3包括仅使用与文档对应的少数字段对基于MySQL的简单搜索索引的更新.

所有这些任务都需要完成才能使文档提交完整.

承载此应用程序的计算机具有双四核Xeon处理器(总共8个核心).但是,每当文档提交时,执行的所有PHP代码都被限制为在其中一个核上运行的单个进程.

我的问题:

您有多少方案(如果有的话)将PHP/MySQL Web应用程序处理负载分散到多个CPU内核中?我理想的解决方案基本上会产生一些进程,让它们在几个内核上并行执行,然后阻塞直到所有进程完成.

相关问题:

您最喜欢的PHP性能分析工具是什么?

php mysql multicore

32
推荐指数
3
解决办法
6万
查看次数

ReactPHP真的是异步的吗?

我一直在对ReactPHP进行一些测试,因为它看起来非常棒.对于简单的套接字服务器,我使用以下react/socket代码对其进行了测试.

$loop = React\EventLoop\Factory::create();

$socket = new React\Socket\Server($loop);
$socket->on('connection', function ($conn) {
    echo 'New client !';

    $conn->on('data', function ($data) use ($conn) {
        $conn->write("Wow, some data, such cool\n");
        $conn->close();
    });
});
$socket->listen(1337);

$loop->run();
Run Code Online (Sandbox Code Playgroud)

直到这一点,没有问题.服务器显示New client !何时连接客户端并且客户端收到响应.

但我做了一个新的测试,对data事件进行了更多的处理.为了说明我的话,我将添加一个for需要几毫秒才能完成的循环:

$conn->on('data', function ($data) use ($conn) {
    $conn->write("Wow, some data, such cool\n");

    for ($i=0; $i<10000000; $i++); // here

    $conn->close();
});
Run Code Online (Sandbox Code Playgroud)

在这种情况下,有10个客户端,客户端将Wow, some data, such cool在所有客户端处理后显示文本(所以~2秒),但服务器将显示New client !而不等待.

所以在这里我缺乏理解,ReactPHP是一个异步I/O,但PHP是单线程的,如果输入和输出之间有很多处理,那将阻止所有客户端.

php sockets asynchronous reactphp

32
推荐指数
1
解决办法
2万
查看次数

Php多线程

Php,并不是真的为多线程做的,但你有任何workarround来处理PHP中的线程.

php multithreading

19
推荐指数
3
解决办法
5万
查看次数

PHP套接字 - 接受多个连接

我正在尝试创建一个简单的客户端/服务器应用程序,因此我正在尝试PHP中的套接字.

现在我在C#中有一个简单的客户端,它可以很好地连接到服务器,但我只能一次将一个客户端连接到这个服务器(我在网上找到了这个代码示例,并为了测试目的稍微调整了一下).

有趣的是,基于同样的例子,我发现了同样的问题:https://stackoverflow.com/questions/10318023/php-socket-connections-cant-handle-multiple-connection

我试图了解它的每个部分,我很接近看到它的工作原理,但由于某种原因,当我连接第二个客户端时,第一个客户端断开连接/崩溃.

任何人都可以给我一些疯狂的想法或指向我应该看的地方吗?

<?php
// Set time limit to indefinite execution
set_time_limit (0);
// Set the ip and port we will listen on
$address = '127.0.0.1';
$port = 9000;
$max_clients = 10;
// Array that will hold client information
$client = array();
// Create a TCP Stream socket
$sock = socket_create(AF_INET, SOCK_STREAM, 0);
// Bind the socket to an address/port
socket_bind($sock, $address, $port) or die('Could not bind to address');
// Start listening for connections
socket_listen($sock); …
Run Code Online (Sandbox Code Playgroud)

php sockets networking tcp socketserver

14
推荐指数
3
解决办法
3万
查看次数

在php的单独线程上发送电子邮件

我想知道是否有办法在php中启动一个单独的线程来发送和发送电子邮件.我有一个小型的Web服务,它从iPad应用程序中获取一些信息,然后将数据插入数据库并随后发送电子邮件.问题是有时电子邮件发送时间太长而iPad的请求超时.有没有办法可以在单独的线程上发送电子邮件?我基本上想在电子邮件发送之前告诉iPad一切都成功了.

一些示例代码:

... Process info and insert into DB
echo "success"; //this should be returned to the iPad right away.

//start new thread here or possibly fork???
$email->send();
Run Code Online (Sandbox Code Playgroud)

谢谢!

php email multithreading

12
推荐指数
1
解决办法
4193
查看次数