2024/10/15

Asynchronous Crawler In PHP, Node.js And Python

ไน…ไน…ๅฐฑ่ฆ่ค‡็ฟ’ไธ€ไธ‹็ˆฌ่Ÿฒๅฏซๆณ•,ไธ็„ถไธๅธธ็”จๅฐฑ็”Ÿ็–ไบ†,้‡ๅฐไธ‰็จฎ่ชž่จ€ๅฏซๅ€‹ async ็š„็‰ˆๆœฌๅง。

node.js

const axios = require('axios');  
const urls = [  
    'https://jsonplaceholder.typicode.com/todos/1',  
    'https://jsonplaceholder.typicode.com/todos/2',  
    'https://jsonplaceholder.typicode.com/todos/3',  
];  
  
(async () => {  
    try {  
        const requests = urls.map(url => axios.get(url));  
        const responses = await Promise.all(requests);  
  
        responses.forEach(response => {  
            console.log(response.data.id);  
        });  
    } catch (error) {  
        console.error(error.message);  
    }  
})();

Python

import aiohttp  
import asyncio  
  
urls = [  
    'https://jsonplaceholder.typicode.com/todos/1',  
    'https://jsonplaceholder.typicode.com/todos/2',  
    'https://jsonplaceholder.typicode.com/todos/3',  
]  
  
  
async def fetch_url(session, url):  
    async with session.get(url) as response:  
        return await response.json()  
  
  
async def main():  
    async with aiohttp.ClientSession() as session:  
        tasks = [fetch_url(session, url) for url in urls]  
        responses = await asyncio.gather(*tasks)  
  
        for responses in responses:  
            print(responses.get('id'))  
  
  
if __name__ == '__main__':  
    asyncio.run(main())

PHP

<?php

use GuzzleHttp\Client;
use GuzzleHttp\Promise\Utils;

include "vendor/autoload.php";

$urls = [
    'https://jsonplaceholder.typicode.com/todos/1',
    'https://jsonplaceholder.typicode.com/todos/2',
    'https://jsonplaceholder.typicode.com/todos/3',
];

$client = new Client([
    'verify' => false,
]);
$promises = [];

foreach ($urls as $url) {
    $promises[] = $client->getAsync($url);
}

$results = Utils::all($promises)->wait();

foreach ($results as $result) {
    echo json_decode($result->getBody()->getContents(), true)['id'], PHP_EOL;
}

2024/10/09

(G)I-DLE 2024 Concert In Taipei

ๆˆ‘่ ปๅธธ็œ‹ๆผ”ๅ”ฑๆœƒ็š„,ไฝ†้€™ๆ˜ฏๆˆ‘็ฌฌไธ€ๆฌก็œ‹้Ÿ“ๅœ˜็š„ๆผ”ๅ”ฑๆœƒ,ๅคชๅ–œๆญก (G)I-DLE ้€™ๅ€‹ๅœ˜้ซ”ไบ†,ๆญŒๅฅฝ่ฝ,ไบ”ๅ€‹ๅœ˜ๅ“กๅˆ่ทŸ็˜‹ๅญไธ€ๆจฃๅฅฝ็ฌ‘,ๅ…ถไธญๆˆ‘็š„ๆœฌๅ‘ฝๆ˜ฏ Minnie,่ฟทไบบ็š„้›™็œผ,ๆœ‰็ฃๆ€ง็š„่ฒ้Ÿณ,่ฆชๅˆ‡็š„ๅค–่กจ,ๅฎŒๅ…จ็„กๆณ•ๆ‹›ๆžถ。

ๆ‡‰่ฉฒๅพˆๅคšไบบ้ƒฝๆ˜ฏๅพž้€™้ƒจๅฝฑ็‰‡ๅ…ฅๅ‘็š„,Minnie ้žๅธธๆœ‰่ชž่จ€ๅคฉๅˆ†,ๅ…ถไป–ๅœ˜ๅ“ก้›–็„ถไนŸ็ฎ—ๅŠชๅŠ›ๅญธไธญๆ–‡,ไฝ† Minnie ่ฌ›่ตทไธญๆ–‡ๅนพไนŽๆฒ’ๆœ‰ๅฃ้Ÿณ,่€Œไธ”ๆœ‰ๆญฃ็ขบ็š„้‚่ผฏ็†่งฃ,้€™ๆฎต่ทŸๅฑฌๆ–ผไธญๅœ‹ไบบ็š„้›จ็ฆๅตๆžถๅฑ…็„ถ็”จ้‚่ผฏ่ผพๅฃ“ ๐Ÿ˜™

ๅฅน้‚ฃ็ฃๆ€งๅ่ถณ็š„ๅ—“้Ÿณๆˆ‘ๅ€‹ไบบ่ฆบๅพ—ๅฅน solo ๆ˜ฏๅฎŒๅ…จๆฒ’ๅ•้กŒ็š„,็œŸ็š„ๆ˜ฏๅคชๅฏๆ„›ไบ†,้›ฃ่ƒฝๅฏ่ฒด็š„ๆ˜ฏ,ๅฅนๅฎถๅœจๆณฐๅœ‹ๆ˜ฏๆœ‰้Œข็š„ๅฎถๆ—,(G)I-DLE Minnie็ซŸๆ˜ฏ้šฑ่—็‰ˆๆณฐๅœ‹ๅ…ฌไธป?,ๆœ‰ไธ€้›†้Ÿ“็ถœๆœ‰ๅŽปๆ‹ๅฅนๅฎถ,่ทŸ็š‡ๅฎฎๅทฎไธๅคš,ไฝ†ๆŽฅ่งธ้Žๅฅน็š„ไบบ้ƒฝ่ชชๅฅนๆฒ’ๆœ‰้ฉ•ๆฐฃ,ๆผ‚ไบฎๅˆๅฏๆ„›็š„ไปฃ่กจ。

ๅ…ฅๅฃ

่ฒป็›กไน็‰›ไบŒ่™Žไน‹ๅŠ›ๆถๅˆฐ็ฅจ,2024/10/06 ็ต‚ๆ–ผ่ฎ“ๆˆ‘ไธ€ๅ„Ÿๅค™้ก˜ๅฏไปฅ็œ‹ๅˆฐไป–ๅ€‘็พๅ ด่กจๆผ”。

Taco

็”ฑๆ–ผๆผ”ๅ”ฑๆœƒๆ˜ฏ 17:30 ้–‹ๅง‹,ๆ‰€ไปฅๅ…ˆๅƒ้ปžๆฑ่ฅฟๅขŠๅขŠ่‚šๅญ,ๅฐๅทจ่›‹่ฃก้ขๆ˜ฏไธๅฏไปฅๅƒๆฑ่ฅฟ็š„。

ๆผ”ๅ”ฑๆœƒๅ…ง้ƒจ

้€ฒๅˆฐๆผ”ๅ”ฑๆœƒ็พๅ ด่ถ…่ˆˆๅฅฎ็š„,ๆˆ‘ๅƒๅŠ ้Ž้‚ฃ้บผๅคšๆผ”ๅ”ฑๆœƒ,็ฌฌไธ€ๆฌก้‡ๅˆฐๅ…‰ๆ˜ฏ็œ‹ MV ๅฐฑๅ…จๅ ดๅคงๅˆๅ”ฑ็š„ๆƒ…ๆณ,็œŸ็š„่ถ…็ดš high。

ๆˆ‘้Œ„ไบ†ๅนพ้ฆ–ๆˆ‘็‰นๅˆฅๅ–œๆญก็š„ๆญŒ็š„็‰‡ๆฎต,ๅคง้ƒจๅˆ†็š„ๆ™‚้–“้ƒฝๆ˜ฏๅฐˆๅฟƒ็”จ้›™็œผ้›™่€ณไบซๅ—็พๅ ด่กจๆผ”,ไป–ๅ€‘็พๅ ดๅฏฆๅœจๆ˜ฏๅคช่ฟทไบบไบ†,็”ฑๆ–ผๅœ˜ๅ…งๆœ‰ๅ…ฉไฝๆœƒ่ฌ›ไธญๆ–‡็š„ไบบ,่ทŸ็พๅ ด็š„ไบบไบ’ๅ‹•็’ฐ็ฏ€ๆปฟ้ปž,Yuqi ่ทŸ่ˆ’่ฏๅˆๅพˆๆž็ฌ‘,่Šๅคฉ็’ฐ็ฏ€็ฌ‘ๆ–™ไธๆ–ท,ๆˆ‘ไธŠไธ€ๆฌก็œ‹็š„ๆผ”ๅ”ฑๆœƒๆ˜ฏ้„ญไธญๅŸบ,้„ญ็š„ๆƒ…ๆญŒๅฑ…ๅคš,ๆ‰€ไปฅๆ•ดๅ ดๅคง้ƒจๅˆ†้ƒฝๆ˜ฏๅฐˆๅฟƒ่ฝๆญŒ,ๅ†ท้œๆ„Ÿๅ‹•,ไฝ†้€™ๅ ดๆ˜ฏๅพž้ ญ high ๅˆฐๅฐพ,ๅ› ็‚บไป–ๅ€‘ๅฏไปฅๅธถๅ‹•ๆฐฃๆฐ›็š„ๆญŒๅคชๅคšไบ†,ๅคง้ƒจๅˆ†ๆ™‚้–“้ƒฝ่™•ๆ–ผ็ˆ†่ฃ‚็ˆฝ็š„ๆƒ…ๆณ,้žๅธธ้žๅธธ็š„ๅฅฝ็Žฉ。

้€™ๆ˜ฏๆˆ‘่ฝ้Ž้€™้บผๅคšๅ ดๆผ”ๅ”ฑๆœƒไปฅไพ†็ฌฌไธ€ๆฌกๆœ‰็ตๆŸๅพŒไธๆƒณ้›ข้–‹็š„ๆƒ…็ท’,ๅฐฑๅพˆๆจไธๅพ—,ๅๆˆ‘ๅฆนๆ—้‚Š็š„ๆญŒ่ฟท้‚„ๅ“ญไบ†,ๅคงๅฎถ้ƒฝๅพˆไพไพไธๆจๅง,ไธญ้–“ๆœ‰็ฉฟๆ’ๅนพๅ€‹ๆ›่ฃๅขŠๆช”็š„ๅฝฑ็‰‡,ๅ…ถไธญไธ€ๅ€‹ๅฝฑ็‰‡ๆ˜ฏ็”จ QA ๅ•ๆฏๅ€‹ๅœ˜ๅ“กไธ€ไบ›ไบ‹ๆƒ…,่ฎ“ๆˆ‘ๅฐ่ฑกๆทฑๅˆป็š„ๆ˜ฏ,็•ถๅ•ๅˆฐๅจŸ็ธฝ (G)I-DLE ็š„ๆผ”ๅ”ฑๆœƒไปฃ่กจไป€้บผๆ™‚,ๅจŸ็ธฝๅ›ž็ญ”:2024 ๆœ€้–‹ๅฟƒ็š„ไธ€ๅคฉ,ๆˆ‘็„กๆฏ”็š„่ดŠๅŒ,้‚ฃๅคฉๆˆ‘็œŸ็š„้žๅธธ้žๅธธ้žๅธธ็š„้–‹ๅฟƒ,ไธ‹ๆฌกไป–ๅ€‘ๅ†ไพ†้–‹ๆผ”ๅ”ฑๆœƒ็š„่ฉฑ,ๆˆ‘ไธ€ๅฎšๆœƒ่ฒทไธ‹้ข็š„ๅบงไฝ,ๆˆ‘ๆƒณ่ฆๅพ—ๅˆฐ่ทŸไป–ๅ€‘ไบ’ๅ‹•็š„ๆฉŸๆœƒ,็œŸ็š„ๅคชๅ–œๆญกไป–ๅ€‘ไบ†。