【質問】複数人が同時にダウンロード

Author Message

Kouichi Sakamoto

Friday 13 August 2010 12:44:50 am

いつもお世話になっております。CSKシステムズ坂本です。

不明な点がございますので、質問をさせてください。
【目的】
ダウンロードをautoloads内でオペレータとして実装し、テンプレートから呼び出すことで、複数人が同時にダウンロード処理をおこないたい。
【ダウンロード方法】
ダウンロード用のHTTPヘッダを指定し、ファイルを読んで出力
header('Content-Disposition: attachment; filename="'.basename($filepath).'"');
header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding: binary');
header('Content-Length: '.filesize($filepath));
readfile($filepath);
【環境】
ezpublish 4.1.3
PHP 5.2.10
【事象】
Firefox:複数人が同時にダウンロードが可能。
IE8:複数人が同時にダウンロードができない。
<詳細>
ダウンロードダイアログでキャンセルを行うと、30秒間以下の事象が発生する。
・自端末から別ウィンドウ、別タブでダウンロードができない。
・別の端末からダウンロードができない。
・autoload内のダウンロードオペレータと同じphpファイルの、オペレータもすべて呼び出せない。
-----------------------------------------------------------------------------------------
以下の仮説を立て、実験。
<<仮説>>
autoload内のPHPファイルは並列処理できない。
【実験】
オペレータ内でsleepを入れ、複数ブラウザから並列処理が可能か実験を行った。
【実験の事象】
複数ブラウザからのリクエストに対して並列処理する事を期待しているが、
autoloadsで定義した関数を経由した場合に、
後発ブラウザからの処理が、先発ブラウザの処理完了後に実行される。
【実験詳細】
・エクステンションの autoloads に以下の定義と処理を実装
login_check.php (内容の抜粋)
function namedParameterList()
{
return array( 'mailcheck' => array( 'str' => array
( 'type'
=>
'string',
'required' => true,
'default' => '' ) ),
'strcheck' => array( 'str' => array
( 'type'
=>
'string',
'required' => true,
'default' => '' ) )
);
}
function mailcheck( $str )
{
$fp = fopen("/tmp/sample0804.txt", "a+");
fwrite($fp, "call mailcheck start --> \n");
fwrite($fp, $str);
fwrite($fp, "\n");
fwrite($fp, date('h:i:s'));
fwrite($fp, "\n");
sleep(30);
fwrite($fp, "<--- call mailcheck end \n");
fclose($fp);
}
※問題切り分けの為、sleepを入れて30秒待機するようにしています。
・FireFoxとIEの2つのブラウザでほぼ同時にアクセス
 →それぞれ、mailcheck関数が呼ばれるが、後発が先発の処理実行後に処理さ
れる
/tmp/sample0804.tx ログ
call mailcheck start -->
Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2) Gecko/20100115
Firefox/3.6
09:57:39
<--- call mailcheck end
call mailcheck start -->
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322;
.NET CLR 2.0.50727)
09:58:09
<--- call mailcheck end
★後発のIEの処理が先発のFFの処理完了後に受付されています。
【質問事項】
eZ Publishにおいて、autoloadsの処理は並列処理にならない仕様でしょうか?
その場合、どのように回避するものでしょうか?

長文で申し訳ございませんが、ご回答いただければと存じます。

以上、よろしくお願い致します。

Powered by eZ Publish™ CMS Open Source Web Content Management. Copyright © 1999-2014 eZ Systems AS (except where otherwise noted). All rights reserved.

eZ debug

Timing: Jan 18 2025 01:01:50
Script start
Timing: Jan 18 2025 01:01:50
Module start 'layout'
Timing: Jan 18 2025 01:01:50
Module start 'content'
Timing: Jan 18 2025 01:01:50
Module end 'content'
Timing: Jan 18 2025 01:01:50
Script end

Main resources:

Total runtime0.1071 sec
Peak memory usage4,096.0000 KB
Database Queries48

Timing points:

CheckpointStart (sec)Duration (sec)Memory at start (KB)Memory used (KB)
Script start 0.00000.0057 587.9453152.6250
Module start 'layout' 0.00570.0038 740.570339.4453
Module start 'content' 0.00950.0963 780.0156424.8672
Module end 'content' 0.10580.0012 1,204.882812.1328
Script end 0.1070  1,217.0156 

Time accumulators:

 Accumulator Duration (sec) Duration (%) Count Average (sec)
Ini load
Load cache0.00322.9449160.0002
Check MTime0.00131.2155160.0001
Mysql Total
Database connection0.00070.610010.0007
Mysqli_queries0.057453.6166480.0012
Looping result0.00040.3619460.0000
Template Total0.075970.920.0379
Template load0.00201.827020.0010
Template processing0.073969.015120.0369
Template load and register function0.00020.225110.0002
states
state_id_array0.00070.697710.0007
state_identifier_array0.00070.643420.0003
Override
Cache load0.00171.6225870.0000
Sytem overhead
Fetch class attribute can translate value0.00090.829510.0009
Fetch class attribute name0.00060.542710.0006
XML
Image XML parsing0.00020.156810.0002
class_abstraction
Instantiating content class attribute0.00000.003610.0000
General
dbfile0.00070.6596100.0001
String conversion0.00000.007340.0000
Note: percentages do not add up to 100% because some accumulators overlap

Templates used to render the page:

UsageRequested templateTemplateTemplate loadedEditOverride
1node/view/full.tplfull/forum_topic.tplextension/sevenx/design/simple/override/templates/full/forum_topic.tplEdit templateOverride template
1content/datatype/view/ezxmltext.tpl<No override>extension/community_design/design/suncana/templates/content/datatype/view/ezxmltext.tplEdit templateOverride template
2content/datatype/view/ezxmltags/paragraph.tpl<No override>extension/ezwebin/design/ezwebin/templates/content/datatype/view/ezxmltags/paragraph.tplEdit templateOverride template
1content/datatype/view/ezxmltags/line.tpl<No override>design/standard/templates/content/datatype/view/ezxmltags/line.tplEdit templateOverride template
1print_pagelayout.tpl<No override>extension/community/design/community/templates/print_pagelayout.tplEdit templateOverride template
 Number of times templates used: 6
 Number of unique templates used: 5

Time used to render debug report: 0.0001 secs