簡體   English   中英

如何在 PHP 中加快加載 Google Drive API

[英]How to speed up loading of Google Drive API in PHP

我在 StackOverflow 中找到了很多關於此的主題,但其中一些已經過時了 8 年前。

我正在使用 Google Drive API 和 PHP 顯示一個表樹,並且已經做到了,但是速度很慢,有時需要 30 秒才能加載。

這是我的代碼:

$root['pageSize'] = 10;
$root['q'] = "mimeType='application/vnd.google-apps.folder' and name='MainFolder' and trashed=false";
$root['fields'] = 'files(id, name, modifiedTime, mimeType), nextPageToken'; 
$rootfolder = $service->files->listFiles($root);
    foreach( $rootfolder as $pp => $mainroot) {
                            
$parameters['pageSize'] = 10;
$parameters['q'] = "'{$mainroot['id']}' in parents"; 
$parameters['fields'] = 'files(id, name,modifiedTime), nextPageToken';
    
$files = $service->files->listFiles($parameters);

foreach( $files as $k => $file ){
   echo " <tr>
                <td><i class='ti-folder'></i> 
                <button class='toggleDetails'> "; 
                    echo $file['name'];
                echo "</button>";
            
                // display subfolders
                    $parameters2['pageSize'] = 10;
                    $parameters2['q'] = "'{$file['id']}' in parents";
                    $parameters2['fields'] = 'files(id, name, modifiedTime, mimeType), nextPageToken'; 
                    $sub_files = $service->files->listFiles($parameters2);
                        echo " <ul class='details filelistdown'>    ";
                        foreach( $sub_files as $kk => $sub_file ) {
                            echo " <li>&nbsp&nbsp&nbsp&nbsp&nbsp<i class='ti-calendar'></i>&nbsp{$sub_file['name']}</li>";  
                                
                                // list files
                                $subfiles_2['pageSize'] = 10;
                                $subfiles_2['q'] = "'{$sub_file['id']}' in parents";
                                $subfiles_2['fields'] = 'files(id, name, modifiedTime, mimeType, webViewLink, webContentLink), nextPageToken'; 
                                $sub_files_two_2 = $service->files->listFiles($subfiles_2);
                                    echo "<ul>";
                                        foreach( $sub_files_two_2 as $uu => $sub_file_2 ) {
                                            echo "<li> &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp *{$sub_file_2['name']} -- <a href='{$sub_file_2['webContentLink']}' target='_blank' class='badge badge-success'>Download</a> or <a href='{$sub_file_2['webViewLink']}' target='_blank' class='badge badge-primary'>View</a></li>";
                                        }
                                    
                            echo "</ul>";                                   
                    }
                }
            }
        

我只想問有沒有什么辦法可以加快加載文件的速度?

謝謝

谷歌驅動器 API 是一個免費的 API 你得到你付出的代價,我不會試圖過多地關注速度你只會受到配額例外的打擊。

關於您的代碼,您正在提出許多請求。 如果您的目錄結構之后,您可以只運行一個完整的請求,將所有內容加載到一個變量中,然后在您自己的機器上進行本地排序。 看到文件列表方法的最大頁面大小為 1000,您可以通過不必調用每個目錄來獲取其子目錄來大量減少請求數量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM