flush temp directory

ron ramos nhadie at gmail.com
Wed Aug 14 11:19:53 UTC 2013


Hi All,

I am trying to test accelerated upload on nginx/php-fpm/php-cgi setup and
comparing different scenarios
e.g one where /temp is a tmpfs, one where it is a disk partition and you
will also notice where in i test using php-cgi. as i need to understand
which can handle file uploads faster.


        location ~ \.php$ {
                include  fastcgi_params;

                client_body_temp_path /temp;
                fastcgi_pass_request_body off;
                client_body_in_file_only on;
                fastcgi_param REQUEST_BODY_FILE $request_body_file;

                #use php-cgi
                #fastcgi_pass 127.0.0.1:10005;

                #use php-fpm
                fastcgi_pass 127.0.0.1:9000;

                fastcgi_index $dir_index;
                fastcgi_param DOCUMENT_ROOT $doc_root;
                fastcgi_split_path_info ^(.+?\.php)(/.*)$;
                fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
        }

i encountered one issue where in the /temp is a tmpfs (size is just 1GB),
after uploading a couple of files i encountered this: *58 pwrite()
"/temp/0000000053" failed (28: No space left on device)

shouldn't it be flushed once the upload is done? or do i need to add some
config to flush it automatic?


Im using a php script that uses curl to do the uploading, here's the script
that manages the upload (curlupload.php)

<?php
$uploadfile = "upload/" . basename($_FILES['file_contents']['name']);
        if (move_uploaded_file($_FILES['file_contents']['tmp_name'],
$uploadfile)) {
                echo "File is valid, and was successfully uploaded.\n";
                unlink($uploadfile);
        } else {
                echo "Possible file upload attack!\n";
        }
        print_r($_FILES);
        print_r($_POST);
?>

i removed the file after it is uploaded so i can run this script in loop,
the script that uploads the file: (testupload.php)

<?php
        $target_url = 'http://10.254.12.160/curlupload.php';

        $file_name_with_full_path = realpath('./test.exe');

        $post = array('extra_info' =>
'123456','file_contents'=>'@'.$file_name_with_full_path);

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,$target_url);
        curl_setopt($ch, CURLOPT_POST,1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
        $result=curl_exec ($ch);
        curl_close ($ch);
        echo $result;
?>

Another thing i noticed is that when not using tmpfs, I/O is high the
server when this is set:

client_body_temp_path /temp;
fastcgi_pass_request_body off;
client_body_in_file_only on;
fastcgi_param REQUEST_BODY_FILE $request_body_file;

Thank You in advance, any help or idea would be appreciated.

Regards,
Ron
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20130814/5810ab1f/attachment.html>


More information about the nginx mailing list