From 140fb486f68a392d0833539ae1bf38c358230e3f Mon Sep 17 00:00:00 2001 From: pangdahua Date: Tue, 7 Nov 2023 10:35:30 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E6=9B=B4=E6=96=B0=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wxwork_finance_sdk.php | 65 ++++++++++++++++++++++++++++++------------ 1 file changed, 46 insertions(+), 19 deletions(-) diff --git a/wxwork_finance_sdk.php b/wxwork_finance_sdk.php index d90ce22..82f856a 100644 --- a/wxwork_finance_sdk.php +++ b/wxwork_finance_sdk.php @@ -1,23 +1,50 @@ "world", - "timeout" => -2, -]); -// 私钥地址 -$privateKey = file_get_contents('private.pem'); - -$chats = json_decode($obj->getChatData(0, 100), true); -var_dump($chats); -foreach ($chats['chatdata'] as $val) { - $decryptRandKey = null; - openssl_private_decrypt(base64_decode($val['encrypt_random_key']), $decryptRandKey, $privateKey, OPENSSL_PKCS1_PADDING); - $obj->downloadMedia($sdkFileId, "/tmp/download/文件新名称.后缀"); +gc_enable(); +$startMemUsed = memory_get_usage(); +function cal_mem() +{ + global $startMemUsed; + echo "memory,", ceil((memory_get_usage() - $startMemUsed) / 1024), 'KB', PHP_EOL; } +echo "start mypid=", getmypid(), PHP_EOL; +sleep(2); +$sdk = new WxworkFinanceSdk("1", "2"); +$privateKey = <<getMessage(), $e->getCode()); -} +do{ + + echo "sync seq={$seq} ==>", cal_mem(), PHP_EOL; + gc_mem_caches(); + gc_collect_cycles(); + $wxChat = $sdk->getChatData($seq, 100); + $chats = json_decode($wxChat, true); + $chatRows = $chats['chatdata']; + foreach ($chatRows as $val) { + $decryptRandKey = null; + $decryptData = openssl_private_decrypt(base64_decode($val['encrypt_random_key']), $decryptRandKey, $privateKey, OPENSSL_PKCS1_PADDING); + $decryptChatRawContent = $sdk->decryptData($decryptRandKey, $val['encrypt_chat_msg']); + $j2 = json_decode($decryptChatRawContent, true); + $msgType = $j2['msgtype']; + if (in_array($msgType, ['image', 'video'])) { + try { + $sdk->downloadMedia($j2[$msgType]['sdkfileid'], "/tmp/download/{$j2[$msgType]['md5sum']}"); + }catch(\Exception $e) { + var_dump($e); + var_dump($e->getMessage(), $e->getCode()); + sleep(1); + } + } + unset($decryptRandKey); + } + echo "loop done ===>", cal_mem(); + unset($chatRows, $wxChat, $chats); + gc_collect_cycles();gc_collect_cycles(); + $seq = $val['seq']; +}while(true); +cal_mem(); \ No newline at end of file