digioz Posted December 11, 2011 Share Posted December 11, 2011 Hello All, I have a simple upload form which I am using to upload files to Box.net using PHP Curl. It works fine for small files, but times out for larger files. Anyone have any suggestions for this? Thanks, Pete Here is the code: <html> <body bgcolor="black"> <div align="center"> <img src="Homepage_02.jpg" border="0" /> <br> <br> <font color="#f1ca63"; font face="Arial"; font size="5">Upload</font> <br> <br> <?php if (isset($_POST['upload'])) { if (!empty($_FILES['new_file_1']['name'])) { $allowedExtensions = array("txt","csv","xml","css","doc", "docx","xls","xlsx","rtf","ppt","pdf","swf","flv","avi","wmv","mov","jpg","jpeg","gif","png"); foreach ($_FILES as $file) { if ($file['tmp_name'] > '') { if (!in_array(end(explode(".", strtolower($file['name']))),$allowedExtensions)) { echo $file['name'].' is an invalid file type!<br/>'; } else { $temp_name = $_FILES['new_file_1']['name']; $localfile = $_FILES['new_file_1']['tmp_name']; $file = fopen($localfile,'r'); $request_url = 'https://upload.box.net/api/1.0/upload/[Token Here]/[Folder ID]'; $post_params['check_name_conflict_folder_option'] = urlencode('1'); $post_params['new_file_1'] = "@$localfile"; $post_params['description'] = urlencode($_POST['description']); $post_params['uploader_email'] = urlencode($_POST['uploader_email']); $post_params['upload'] = urlencode('upload'); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $request_url); curl_setopt($ch, CURLOPT_VERBOSE, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_params); curl_setopt($ch, CURLOPT_TIMEOUT, 300); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $result = curl_exec($ch); curl_close($ch); $resultArray = explode(' ',$result); if($resultArray[5] != '') { $fileID = substr($resultArray[5],4,-1); $shareName = $temp_name; $link = 'http://www.box.net/shared/'.$shareName; } $renameurl = addslashes("https://www.box.net/api/1.0/rest?action=rename&api_key=[API KEY]&auth_token=[TOKEN Here]&target=file&target_id=".$fileID."&new_name=".$shareName); $renameResult = file_get_contents($renameurl); echo '<font color="white">Upload Successful</font>'; } } } } else { echo '<font color="white">Please select a file</font>'; } } ?> <hr width=600 color=grey> <br> <div align="center"> <form action="box_upload_curl.php" enctype="multipart/form-data" method="post"> <input type="hidden" name="check_name_conflict_folder_option" value="1"/> <table> <tr> <td class="field" style="color: #f1ca63; font-family: Arial; font-size: 14px" width="50%">Choose File to Upload: </td> <td class="input"><input type="file" name="new_file_1" /></td> </tr> <tr> <td class="field field_top" style="color: #f1ca63; font-family: Arial; font-size: 14px" ><br/> Description (optional):</td> <td class="input"><br/><textarea name="description"></textarea></td> </tr> <tr> <td class="field field_top" style="color:#f1ca63; font-family: Arial; font-size: 14px" > <br/> Your e-mail <font color="red">*</font>: </td> <td class="input field_top" style="color: #f1ca63; font-family: Arial; font-size: 14px" > <br/> <input type="text" name="uploader_email" id="email_input"></input> </td> </tr> <tr> <td colspan="2" class="submit" align="center"> <br /> <input type="submit" name="upload" value="Upload" /> </td> </tr> </table> </form> <hr width=600 color="grey"> </div> Quote Link to comment https://forums.phpfreaks.com/topic/252917-curl-post-timeout-on-large-file-upload/ Share on other sites More sharing options...
premiso Posted December 11, 2011 Share Posted December 11, 2011 How large is "larger"? Take a look at: set_time_limit, if it is your server side php doing it, that should solve it. Quote Link to comment https://forums.phpfreaks.com/topic/252917-curl-post-timeout-on-large-file-upload/#findComment-1296681 Share on other sites More sharing options...
xyph Posted December 11, 2011 Share Posted December 11, 2011 There's a LOT out there if you Google 'php large file upload' There are a few directives, and in some cases a couple hoops to jump through. Quote Link to comment https://forums.phpfreaks.com/topic/252917-curl-post-timeout-on-large-file-upload/#findComment-1296706 Share on other sites More sharing options...
delickate Posted December 11, 2011 Share Posted December 11, 2011 Try this: ini_set('memory_limit','516M'); ini_set('max_execution_time', 600); It'll increase time and memory of uploading. Let me know if you still face any issue. Thanks Quote Link to comment https://forums.phpfreaks.com/topic/252917-curl-post-timeout-on-large-file-upload/#findComment-1296714 Share on other sites More sharing options...
digioz Posted December 22, 2011 Author Share Posted December 22, 2011 Thank you delickate. I did try your suggestion, but it looks like because our site is in a shared hosting environment, they do not allow us to increase memory limit or execution time. What's even worse is that they don't allow you to change the maximum upload size either, so we will have to switch to a dedicated web host to be able to do what we need. Here are the setting changes I have in mind to get this to work once we make that switch: max_execution_time = 600 max_input_time = 600 memory_limit = 200M post_max_size = 200M upload_max_filesize = 200M Thanks, Pete Quote Link to comment https://forums.phpfreaks.com/topic/252917-curl-post-timeout-on-large-file-upload/#findComment-1300627 Share on other sites More sharing options...
digioz Posted January 6, 2012 Author Share Posted January 6, 2012 An update on this issue. We have made a switch to a dedicated server and I changed the PHP Settings above and the file upload now goes through for larger files without any issues. Thanks for the help! Pete Quote Link to comment https://forums.phpfreaks.com/topic/252917-curl-post-timeout-on-large-file-upload/#findComment-1304973 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.