- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试以异步方式使用 cURL 和回调执行请求。我正在使用从网站复制的一段代码。
当我在浏览器中输入这个 url:http://www.myhost:3049/exemplo/index/async/它执行函数 asyncAction,即执行 curl_post 函数。
/**
* Send a POST requst using cURL
* @param string $url to request
* @param array $post values to send
* @param array $options for cURL
* @return string
*/
function curl_post($url, array $post = NULL, array $options = array())
{
$defaults = array(
CURLOPT_POST => 1,
CURLOPT_HEADER => 0,
CURLOPT_URL => $url,
CURLOPT_FRESH_CONNECT => 1,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_FORBID_REUSE => 1,
CURLOPT_TIMEOUT => 4,
CURLOPT_POSTFIELDS => http_build_query($post)
);
$ch = curl_init();
curl_setopt_array($ch, ($options + $defaults));
if( ! $result = curl_exec($ch))
{
$result = curl_error($ch);
}
curl_close($ch);
return $result;
}
public function asyncAction() {
$this->curl_post("http://www.myhost:3049/exemplo/index/add/");
}
然后 cURL 对该 URL 执行 cURL 以执行一个 Action ,该 Action 现在与其他功能在同一个类中,仅用于测试。这个 Action 是 addAction,它只返回一个带有消息“CALLBACK”的字符串。
function addAction() {
sleep(15);
return "CALLBACK";
}
$result 只返回 false。也许问题是我请求尝试执行与 cURL 函数在同一类中的操作。但无论如何,我怎样才能得到错误信息。有没有更好的解决方案,经过测试,并且对使用 as asynchronous with callback 有很好的解释?因为我读到的东西没有很好的解释,也没有解释什么时候,如何管理回调。
最佳答案
也许看看这个:https://gist.github.com/Xeoncross/2362936
要求:
class Requests
{
public $handle;
public function __construct()
{
$this->handle = curl_multi_init();
}
public function process($urls, $callback)
{
foreach ($urls as $url) {
$ch = curl_init($url);
curl_setopt_array($ch, array(CURLOPT_RETURNTRANSFER => TRUE));
curl_multi_add_handle($this->handle, $ch);
}
do {
$mrc = curl_multi_exec($this->handle, $active);
if ($state = curl_multi_info_read($this->handle)) {
//print_r($state);
$info = curl_getinfo($state['handle']);
//print_r($info);
$callback(curl_multi_getcontent($state['handle']), $info);
curl_multi_remove_handle($this->handle, $state['handle']);
}
usleep(10000); // stop wasting CPU cycles and rest for a couple ms
} while ($mrc == CURLM_CALL_MULTI_PERFORM || $active);
}
public function __destruct()
{
curl_multi_close($this->handle);
}
}
关于带回调的 PHP 异步 cURL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26039848/
我的代码遇到了很大的困难。我正在开发一个显示歌词和和弦的应用程序。我使用两个重叠的textview分隔了和弦和歌词。 我在这个项目中遇到的问题是音高改变功能。我尽我所能向我解释得更好: 和弦总数为12
我有一个游戏并使用 Tune 作为分析库。使用最新的 Unity (5.3.4f1) 并通过 Unity 获取 apk(无 eclipse/android studio)。 我的游戏在 Play 商店
我是一名优秀的程序员,十分优秀!