2

インポートプロセスに時間がかかり、Symfony 2.1で利用可能な新しいStreamedResponseを使用して、タスクに関するフィードバックをユーザーに報告しようとしていますが、応答がストリーミングされていません(処理の最後にすべてのコンテンツを一度に取得します) 。これは私のコントローラーのコードです:

            $em = $this->getDoctrine()->getEntityManager();
            $response = new StreamedResponse();
            $response->setCallback(function () use ($em) {
                $file = fopen(sys_get_temp_dir().'/categories.txt', 'r');
                $lineNum = 0;
                while ($line = fgets ($file)) {
                    $category = new Category();
                    $fields = explode("\t",$line);
                    $category->setFullId($fields[0]);
                    $category->setName($fields[2]);
                    $category->setFullName($fields[4]);
                    $em->persist($category);
                    if ($lineNum%100==0) {
                        echo 'Processing Line: '.$lineNum.'<br>';
                        flush();                            
                        $em->flush();
                    }
                    $lineNum++;
                }
                fclose($file);
            });
            return $response;                 

何が間違っているのか考えてみませんか?

4

1 に答える 1

4

ob_flush()OK、見つかりました。との両方を呼び出す必要がありますflush()

于 2012-08-30T14:42:26.760 に答える