From 639965c7cc8f373d770b8ac0c7cb53e78b285e5c Mon Sep 17 00:00:00 2001 From: mathdesc Date: Tue, 14 Aug 2012 08:20:35 -0400 Subject: [PATCH] synthetic description of the bug --- ...attachments___34__snails_it_all__34__.mdwn | 41 ++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/doc/bugs/Slow_Filecheck_attachments___34__snails_it_all__34__.mdwn b/doc/bugs/Slow_Filecheck_attachments___34__snails_it_all__34__.mdwn index 8cbffb858..1f68acc41 100644 --- a/doc/bugs/Slow_Filecheck_attachments___34__snails_it_all__34__.mdwn +++ b/doc/bugs/Slow_Filecheck_attachments___34__snails_it_all__34__.mdwn @@ -1 +1,40 @@ -see [[users/mathdesc]] +Saving a wiki page in ikwiki or +ikiwiki --setup wiki.setup --rebuild takes a **dozen minutes** on a tiny tiny wiki (10 user-added pages)! + +I profiled ikiwiki with [[!cpan Devel::SmallProf]] : see [[users/mathdesc]] for details. + +And I came to the conclusion that filecheck on attachment was the only cause. +It always go the fallback code using time-consuming file even there it's look like it's +not successful. + +
+ # Get the mime type.
+        #
+        # First, try File::Mimeinfo. This is fast, but doesn't recognise
+        # all files.
+        eval q{use File::MimeInfo::Magic};                    
+        my $mimeinfo_ok=! $@;                                     
+        my $mimetype;
+        if ($mimeinfo_ok) {
+                my $mimetype=File::MimeInfo::Magic::magic($file);
+        }                                                         
+        
+        # Fall back to using file, which has a more complete
+        # magic database.
+        if (! defined $mimetype) {
+                open(my $file_h, "-|", "file", "-bi", $file); 
+                $mimetype=<$file_h>;                                 
+                chomp $mimetype;                            
+                close $file_h;                   
+        }
+        if (! defined $mimetype || $mimetype !~s /;.*//) {
+                # Fall back to default value.
+                $mimetype=File::MimeInfo::Magic::default($file)
+                        if $mimeinfo_ok; 
+                if (! defined $mimetype) {
+                        $mimetype="unknown";
+                }                                                  
+        }        
+
+ +Any ideas , solve :) more that welcome.