andyarus
User-
Posts
63 -
Joined
-
Last visited
andyarus's Achievements
Explorer (1/14)
-12
Reputation
-
юзай рефакторинг, автоматом все заменишь и усе. как у тебя сделано, я бы точно делать не стал. пс. проспонсируешь, я настрою все, чтобы работало пспс. по теме хз, не сталкивался с таким.
-
а post-запросом в данном случае можно отправить?
-
ага win7 2мбит/с вручную ставил апач в одном месте подсказали, что причиной может быть частое curl_init curl_close.
-
у меня почти так и сделано. только в цикле удаляются папки, а файлы сразу сносятся (CURLOPT_QUOTE, array('file1','file2','fileN'); ). скрипт делает то, что я хочу. но медленно! в 4 раза медленнее FileZilla! вопрос - какие у меня недочеты в коде? как ускорить?
-
не все так просто оказалось, как хотелось бы. RMD удаляет только пустые папки. накатал велосипед, но он катится(удаляет файлы) в 4 раза медленнее FileZilla. хелп оптимизировать быдлокод? ?<?php set_time_limit(0); ob_implicit_flush(1); ob_end_flush(); $mtbegin = microtime(1); $useragents = str_replace("\r\n", '', file('useragents.txt')); //формат //ftp://login1:password@ftp.host.ru //ftp://login2:password@ftp.host.ru //ftp://login3:password@ftp.host.ru $count = file('loginsftp.txt'); for($i=0;$i<count($count);$i++){ $useragent = $useragents[mt_rand(0, count($useragents)-1)]; $logins = str_replace("\r\n", '', file('loginsftp.txt')); $url = array_shift($logins); file_put_contents('loginsftp.txt', implode("\r\n", $logins)); $result = CURL_FTP($url, 0, 0); $content = $result['content']; $arr = explode("\r\n", $content); $ftp = ''; foreach($arr as $v) $v !== '' ? $ftp[] = $v : ''; if($ftp == ''){ echo $i+1 .' '.$url.' <b style="color:green;">пусто!</b><br />'; continue; } else { $files = ''; $dirs = ''; foreach($ftp as $v) preg_match("#\.#", $v) ? $files[] = 'DELE '.$v : $dirs[] = $v; if($files !== '') $result = CURL_FTP($url, $files, 0, 1); if($result['errno'] == 21) $files = ''; $dirs = ''; foreach($ftp as $v) !is_dir($url.'/'.$v) ? $files[] = 'DELE '.$v : $dirs[] = $v; if($dirs !== ''){ for($a=0;$a<count($dirs);$a++){ $urldir = $url.'/'.$dirs[$a].'/'; $result = remove_ftp($urldir); if($result == true) continue; } } } $result = CURL_FTP($url, 0, 0); if(strlen($result['content']) == 0){ echo $i+1 .' '.$url.' <b style="color:maroon;">файлы удалены!</b><br />'; } else { echo $i+1 .' '.$url.' <b style="color:red;">huinya какая-то! (<i>не все файлы удалились. возможно проблема с CURLOPT_TRANSFERTEXT или правами на файлы</i>)</b><br />'; } continue; } if((round((round(microtime(1)-$mtbegin, 2))/60)) > 1){ echo '<br />Всего времени затрачено: '; echo '~'.round((round(microtime(1)-$mtbegin, 2))/60) .' мин<br /><br />'; } else { echo '<br />Всего времени затрачено: '; echo '~'.round(microtime(1)-$mtbegin, 2) .' сек<br /><br />'; } function remove_ftp($url){ $result = CURL_FTP($url, 0, 0); $content = $result['content']; $arr = explode("\r\n", $content); $ftp = ''; foreach($arr as $v) $v !== '' ? $ftp[] = $v : ''; $dir = preg_replace("#ftp://.+/#U", "", $url); $urldir = preg_replace("#/[^@:/]+/$#U", "/", $url); if($ftp == ''){ $dir = array("RMD $dir"); CURL_FTP($urldir, $dir, 0, 1); return true; } $files = ''; $dirs = ''; foreach($ftp as $v) preg_match("#\.#", $v) ? $files[] = 'DELE '.$dir.$v : $dirs[] = $v; if($files !== '') $result = CURL_FTP($urldir, $files, 0, 1); if($result['errno'] == 21) $files = ''; $dirs = ''; foreach($ftp as $v) !is_dir($url.'/'.$v) ? $files[] = 'DELE '.$v : $dirs[] = $v; if($dirs !== ''){ for($b=0;$b<count($dirs);$b++){ $urldir = $url.$dirs[$b].'/'; $result = remove_ftp($urldir); if($result == true) continue; } } remove_ftp($url); } function CURL_FTP($url, $deletearray, $upload=0, $delete=0){ global $useragent, $infile, $filetoupload; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FTPLISTONLY, 1); //curl_setopt($ch, CURLOPT_TRANSFERTEXT, 1); // если нет бинарных файлов (картинки, фавиконы и тп), вроде как работает быстрее if($upload == 1){ curl_setopt($ch, CURLOPT_UPLOAD, 1); curl_setopt($ch, CURLOPT_INFILE, $infile); curl_setopt($ch, CURLOPT_INFILESIZE, filesize($filetoupload)); } $delete == 1 ? curl_setopt($ch, CURLOPT_QUOTE, $deletearray) : ''; curl_setopt($ch, CURLOPT_VERBOSE, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_USERAGENT, $useragent); $content['content'] = curl_exec($ch); $content['errno'] = curl_errno($ch); //if(curl_errno($ch) !== 21){ // echo 'Curl errornumber: ' . curl_errno($ch) . '<br />'; // echo 'Curl error: ' . curl_error($ch); //} curl_close($ch); return $content; } ?>
-
echo basename($_SERVER['PHP_SELF']);
-
как все просто оказывается) благодарю!
-
я пробовал эти функции. но были тормоза, срабатывало через раз. кароч так и не догнал в чем дело, заюзал курл. работает моментально. есть команда типа DELE, но чтобы удаляла папки?
-
$content = CURL_FTP($url, 0, 0); $arr = explode("\r\n", $content); foreach($arr as $v) $v !== '' ? $ftpfiles[] = $v : ''; foreach($ftpfiles as $v) $deletearray[] = 'DELE '.$v; CURL_FTP($url, 0, 1); function CURL_FTP($url, $upload=0, $delete=0){ global $useragent, $infile, $filetoupload, $deletearray; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FTPLISTONLY, 1); if($upload == 1){ curl_setopt($ch, CURLOPT_UPLOAD, 1); curl_setopt($ch, CURLOPT_INFILE, $infile); curl_setopt($ch, CURLOPT_INFILESIZE, filesize($filetoupload)); } $delete == 1 ? curl_setopt($ch, CURLOPT_QUOTE, $deletearray) : ''; curl_setopt($ch, CURLOPT_VERBOSE, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_USERAGENT, $useragent); $content = curl_exec($ch); if(curl_errno($ch)){ echo 'Curl error: ' . curl_error($ch); } curl_close($ch); return $content; } цель - удалить все. достигается, если нет папок. если есть, вылазит ошибка. пробовал отделять папки, но не работает на ftp! foreach($ftpfiles as $v) !is_dir($v) ? $deletearray[] = 'DELE '.$v : ''; 1 вопрос - как на фтп отделить папки и файлы 2 вопрос - с помощью какой команды удаляются папки. файлы удаляются (DELE имя файла) 3 если нет команды для папок, как удалить все с ftp?
-
я хочу аналог на javascript <?php if($configcheckedcheckbox == ' checked') { echo <<<EOD <script language="javascript"> show('logins'); show('spisok'); </script> EOD; } ?> блин, как все просто оказывается. надо было так var a = document.selecttelephone.logins[1].checked; if(a) { show('logins'); show('hlogins'); // == show('spisok'); } благодарю за помощь!
-
я в javascript не бум-бум) document.selecttelephone.logins[1]; - нашел этот код. как я понял нумерация кнопок идет сверху вниз, начиная с [0] так не работает почему-то var a = document.selecttelephone.logins[1]; if (a.cheked) { show('logins'); show('spisok'); } как сделать, чтобы заработало или как вставить на страницу <script language="javascript"> show('logins'); show('spisok'); </script> с помощью javascript? а да, это должно срабатывать при загрузке страницы. т.е. не когда нажимаю на document.selecttelephone.logins[1] а именно когда страница только открывается т.е. с помощью javascript нельзя получить состояние "неактивного" (хз как правильно) элемента?
-
ага, спасибо! я прост не видел твоего сообщения, когда отправлял последний пост. var a = document.selecttelephone.logins[1]; if (a.cheked) { innerHTMl = '<script language="javascript"> show('logins'); show('spisok'); </script>'; } как правильно вставить на страницу? есть в javascript аналог heredoc или howdoc ?
-
Сделал все как хотел <form action="config.php" method="POST" name="selecttelephone"> <input type="radio" name="logins" value="all"<?php echo $configcheckedall; ?> onclick="hide('logins');hide('spisok')"><span style="cursor:pointer;" onclick="hide('logins');hide('spisok');document.selecttelephone.logins[0].checked=true">ВСЕ</span><br /> <input type="radio" name="logins" value="checkbox"<?php echo $configcheckedcheckbox; ?> onclick="show('logins');show('spisok')"><span style="cursor:pointer;" onclick="show('logins');show('spisok');document.selecttelephone.logins[1].checked=true">Выборочно</span> <span id="spisok" style="cursor:pointer;display:none;" onclick="showhide('logins')" id="hlogins">Скрыть список</span> </form> <script language="javascript"> function show(eid) { var gel = document.getElementById(eid); gel.style.display = ''; } function hide(eid) { var gel = document.getElementById(eid); gel.style.display = 'none'; } function showhide(eid) { var gel = document.getElementById(eid); var isvis = gel.style.display ? 1 : 0; gel.style.display = isvis ? '' : 'none'; var th = document.getElementById('h'+eid); if(th) { var rl = ['Скрыть список', 'Показать список']; th.innerHTML = th.innerHTML.replace(rl[isvis], rl[1-isvis]); } } </script> <?php if($configcheckedcheckbox == ' checked') { echo <<<EOD <script language="javascript"> show('logins'); show('spisok'); </script> EOD; } ?> Можно как-то проще было сделать?) Можно заменить пхп код на javascript? т.е. при selecttelephone.logins[1] == checked на страницу добавлялся javascript <script language="javascript"> show('logins'); show('spisok'); </script> Вопрос остается открытым: как получить checked или нет <input type="radio" name="logins"> ?!
-
Как получить checked или нет <input type="radio" name="logins"> ?! Ща так <form name="selecttelephone"> <input type="radio" name="logins" value="all"><span style="cursor:pointer;" onclick="hide('logins');document.selecttelephone.logins[0].checked=true">ВСЕ</span><br /> <input type="radio" name="logins" value="checkbox"><span style="cursor:pointer;" onclick="show('logins');document.selecttelephone.logins[1].checked=true">Выборочно</span> </form> <script language="javascript"> function show(eid) { var gel = document.getElementById(eid); gel.style.display = ''; } function hide(eid) { var gel = document.getElementById(eid); gel.style.display = 'none'; } </script> <div id="logins" style="display:none;"></div> Надо, чтобы было тоже самое, когда выбираешь radio. Если selecttelephone.logins[0] == checked, то hide('logins'); Если selecttelephone.logins[1] == checked, то show('logins'); Как это на javascript делается? ы, если добавить <input type="radio" name="logins" value="all" onclick="show('logins')">, то все работает как нужно. пробовал так, но код show/hide нерабочий был, а ща забыл затестить. но вопрос как получить checked или нет <input type="radio" name="logins"> ?! остается открытым. надо, чтобы при selecttelephone.logins[1] == checked появлялся <span style="cursor:pointer;" onclick="showhide('logins')" id="hlogins">Скрыть список</span> function showhide(eid) { var gel = document.getElementById(eid); var isvis = gel.style.display ? 1 : 0; gel.style.display = isvis ? '' : 'none'; var th = document.getElementById('h'+eid); if(th) { var rl = ['Скрыть список', 'Показать список']; th.innerHTML = th.innerHTML.replace(rl[isvis], rl[1-isvis]); } }
-
http://jsfiddle.net/nmpAd/ http://jsfiddle.net/m97Qg/3/ http://jsfiddle.net/f9YuV/