I have a script that merges 2 files, and uploads it
1) Small file - LITERAL
2) LARGE FILE (where size<=2GB) - GENERATED
# $file_size is <= 2GB
# generate sparse
$block_size = $file_size / 10;
exec("dd if=/dev/zero of=sparse bs=" . $block_size . " count=0 seek=" . ($file_size - 32768),$tmp_array);
sleep(12);
# merge files
exec("cat temp_file sparse > mergedFile");
# remove temporary files
exec("rm temp_file sparse");
# upload the file now
My problem is, when it is merging the files, it takes a lot of time.
The merging process is skipped and the file is already uploaded, which should not be done until the whole Sparse file and the temporary file is Merged.
thanks for helping
~macki
exec("cat temp_file sparse > mergedFile");
isn't waiting for the command to finish because you are redirecting the standard output of the cat command to a file. If you run a command like this in exec()
, the command will run in the background and PHP will move immediately to the next line. Two possible solutions: either wrap the cat temp_file sparse >mergedFile
inside of another shell script or do the file concatenation within PHP itself.