Model.request_run - kouji6309/SingleMVC GitHub Wiki
執行一個或多個請求資源。通常接在 Model::request_async 後面。
protected static request_run(
mixed $rs,
int $start = 0,
int $length = -1,
bool $get_header = false
) : mixed
-
請求物件,可接受三種輸入:
- cURL 控制代碼。
- cURL 控制代碼的陣列,例
[$ch1, $ch2]
- 陣列項目的 request 索引為 cURL 控制代碼,例
[ ['request' => $ch1, 'other key' => ...], ['request' => $ch2, 'other key' => ...], ]
每種會傳回不同的結果。
-
開始索引,若超過
rs
範圍則為 0。
若rs
為 cURL 控制代碼 則忽略。 -
長度,表示從
start
開始執行幾個,若為 -1 或超過結陣列尾則執行全部。
若rs
為 cURL 控制代碼 則忽略。 -
是否傳回 Header,是則將結果結構改為
['header' => [ ... ], 'content' => '...']
- 布林:
false
,執行失敗 - 字串:回應內容,當
rs
為 cURL 控制代碼時。 - 陣列:回應內容。
- 當
rs
為 cURL 控制代碼的陣列時,結構為['...', '...', ...]
- 當
rs
為陣列項目的request
索引為 cURL 控制代碼時,結構為[ ['request' => $ch1, 'content' => '...', 'other key' => ...], ['request' => $ch2, 'content => ''...', 'other key' => ...], ... ]
- 當
建立多個請求,之後同步執行請求
$chs = [];
for ($i = 1; $i <= 10; $i++) {
$chs[] = self::request_async(
'https://www.example.com/api/news',
'get', ['id' => $i]
);
}
$result = self::request_run($chs);
建立多個請求,之後分批同步執行請求
$chs = [];
for ($i = 1; $i <= 30; $i++) {
$chs[] = self::request_async(
'https://www.example.com/api/news',
'get', ['id' => $i]
);
}
$result1 = self::request_run($chs, 0, 10);
$result2 = self::request_run($chs, 10, 10);
$result3 = self::request_run($chs, 20, 10);
建立多個請求,並附加資料,之後同步執行請求,指定傳回 Header
$chs = [];
for ($i = 1; $i <= 10; $i++) {
$chs[] = [
'request' => self::request_async(
'https://www.example.com/api/news',
'get', ['id' => $i]
),
'id' => $i,
];
}
$result = self::request_run($chs, 0, -1, true);
foreach ($result as $r) {
if ($r['header']['Status'] == 200) {
output('text', $r['id'].' is '.$r['content']."\n");
}
}