Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中加速googledriveapi的加载_Php_Google Api_Google Drive Api_Google Api Php Client - Fatal编程技术网

如何在PHP中加速googledriveapi的加载

如何在PHP中加速googledriveapi的加载,php,google-api,google-drive-api,google-api-php-client,Php,Google Api,Google Drive Api,Google Api Php Client,我在StackOverflow中发现了很多关于这方面的话题,但有些已经过时了,有些是8年前的事了 我正在使用GoogleDriveAPI和PHP显示一个表树,并且已经这样做了,但是它太慢了,有时需要30秒才能加载 这是我的密码: $root['pageSize'] = 10; $root['q'] = "mimeType='application/vnd.google-apps.folder' and name='MainFolder' and trashed=false";

我在StackOverflow中发现了很多关于这方面的话题,但有些已经过时了,有些是8年前的事了

我正在使用GoogleDriveAPI和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>";                                   
                    }
                }
            }
        
$root['pageSize']=10;
$root['q']=“mimeType='application/vnd.google apps.folder'和name='MainFolder',trashed=false”;
$root['fields']='files(id、name、modifiedTime、mimeType),nextPageToken';
$rootfolder=$service->files->listFiles($root);
foreach($rootfolder作为$pp=>$mainroot){
$parameters['pageSize']=10;
$parameters['q']=“{$mainroot['id']}在父级中”;
$parameters['fields']='files(id,name,modifiedTime),nextPageToken';
$files=$service->files->listFiles($parameters);
foreach($k=>$file形式的文件){
回声“
"; 
echo$file['name'];
回声“;
//显示子文件夹
$parameters2['pageSize']=10;
$parameters2['q']=“{$file['id']}在父级中”;
$parameters2['fields']='文件(id、名称、修改时间、mimeType),下一个GetOken';
$sub_files=$service->files->listFiles($parameters 2);
echo“
    ”; foreach($kk=>$sub_文件形式的sub_文件){ echo“
  • {$sub_文件['name']}
  • ”; //列出文件 $subfiles_2['pageSize']=10; $subfiles_2['q']=“{$sub_文件['id']}在父文件中”; $subfiles_2['fields']='文件(id、名称、修改时间、mimeType、webViewLink、webContentLink),下一个GetOken'; $sub\u files\u two\u 2=$service->files->listFiles($subfiles\u 2); 回声“
      ”; foreach($sub_files\u two\u 2作为$uu=>$sub_file\u 2){ echo“
    • nbsp>nbsp*{$sub_file_2['name']}-或
    • ”; } 回声“
    ”; } } }
我只是想问一下,有没有办法加快加载文件的速度


感谢

谷歌硬盘API是一个免费的API,你只需付费即可获得,我不会试图过多关注速度,你只会受到配额例外的影响


关于你的代码,你有很多要求。如果在目录结构之后运行一个完整的请求,则可以将所有内容加载到单个变量中,然后在自己的计算机上对其进行本地排序。鉴于文件列表方法的最大页面大小为1000,您可以通过不必调用每个目录来获取其子目录来大量减少请求数。

为什么要将
pageSize
设置为
10
?将其设置为最大值,
1000
。此外,我会首先检索驱动器中的所有文件,然后根据它们的父级组织它们。没有必要像其他人说的那样递归调用API。@Iamblichus你好,先生。我将其设置为10,因为我认为它可能有助于优化加载<代码>我首先检索驱动器中的所有文件,然后根据它们的父级对它们进行组织。这就是我在父级中使用“$idparent”所做的。有没有给孩子打电话的建议?我使用的是v3 btwNo,问题是你不应该在parents中调用
$parameters['q']=“{$mainroot['id']}”如果要获取所有文件(而不仅仅是不在任何子文件夹中的文件)。问题是(1)获取所有文件,(2)基于文件的父级,在本地构建树结构,不再调用API(因为您已经获得了所有必要的信息)。这对你有意义吗?你需要更多的帮助吗?