ネタ切れなので、昔調べた、6年前ぐらいから気になってる技術ネタ。
ダウンロードCGI を C/C++言語で作る場合、fwrite で転送してやることで、
現在ダウンロードしているバイト数などをサーバー側で把握できます。
FCGI を使うと fwrite/fread などは全て FCGI_Write 等に置換されてしまい、
この挙動が変わってしまうので、ユーザーがダウンロードを完了したかどうか?
というのを判断する材料がありません。
また fwrite( const void* … ) という定義も fwrite( void* … ) になって
しまうので、厳格にプログラミングしている人にとっては最悪です。
せっかく「この関数の中では変数の中身を変更しないよ!」ってルールで実装
してるのに、fcgi モードでコンパイルすると (void*) でキャストしてやらないと
いけない。
安全を考えるのなら、キャストでは無く一時バッファにコピーして渡すべきだけど。
fcgi のバージョンすら覚えて無いけど、そんな fcgi をまだ現役で使ってます。
0 コメント:
コメントを投稿