过期域名预定抢注

 找回密碼
 免费注册

關於通過Mysql語句發佈文章選擇Category問題

  [複製鏈接]
發表於 2013-12-3 15:22:35 | 顯示全部樓層 |閱讀模式
通過wp-admin後台或者Windows Live Write發佈文章仍然麻煩,於是自己使用PHP程序直接將文章插入到網站數據庫中,這樣的話數據寫入速度要快N倍,適合大量文章發佈或多站同時維護。但WP程序的數據庫文章表wp-posts和Category關係表是分開的,有沒有這樣做過的,怎麼在插入文章的同時,選擇所屬的分類。
- |& o$ m0 G' R. [
6 ?5 V5 n5 Z& d" e% W" g( w2 j' J6 C4 I
發表於 2013-12-3 15:42:52 | 顯示全部樓層
在wp_term_relationships表插入之前文章的ID(mysql_insert_id)以及類別ID+ H% V' B4 H2 @% }" W
回復 给力 爆菊

使用道具 舉報

 樓主| 發表於 2013-12-3 15:47:50 | 顯示全部樓層
本帖最後由 Seanhere 於 2013-12-3 15:50 編輯
7 e3 o6 e& }5 ^% J- j
mattfox 發表於 2013-12-3 15:42
1 f2 S% H6 S& i' N在wp_term_relationships表插入之前文章的ID(mysql_insert_id)以及類別ID
/ R* p) l* |6 e& g8 t- _
是的,要先讀取已發佈文章的ID,並且還要知道該ID代表文章所屬category,才能作此操作,量大之後挺麻煩的
8 z7 ?* c, Y' O. r' X, j
) f2 ~1 r- `# [7 `' z/ A' |$ t6 V3 G( Z
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-3 17:01:07 | 顯示全部樓層
先讀取id,然後同時寫2條sql分別插入2個表,這個不難吧
$ i9 O$ S; o8 ~: b. o4 L: J% k2 A+ |# x7 |  \% ]- e8 s
你可以把寫好的代碼放上來,我幫你改- c# Y' X: J3 J+ R6 y) v
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-3 19:23:03 | 顯示全部樓層
共享一下吧,最近好像也有這個需要.
. Z/ t# y& F/ _. k7 Z
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-3 21:08:18 | 顯示全部樓層
同求一個啊,這個是主要功能速度會提高很多7 C, M( f8 e( b# P: p
回復 给力 爆菊

使用道具 舉報

 樓主| 發表於 2013-12-3 21:33:57 | 顯示全部樓層
本帖最後由 Seanhere 於 2013-12-3 21:52 編輯 4 v. N) d/ [$ S0 K

& R4 s8 x+ Q# \% M+ D) J2 [  z這個方法是用來更新用來做外鏈的站群的,站群定期更新。由於站群量越來越大,更新一遍很費時間,但又不願買市場上的站群軟件。所以才想出了這種方法。) f3 x  l8 N: V1 Z3 O
自己雖有一些編程基礎,但沒學過php,是邊查語法邊寫的,程序可能有些笨拙,高手不要見笑。
  1. <?php
    % O! e; l! D0 o% x" R0 ~4 P
  2. //數據庫參數
    ; y% R1 h6 u2 ?1 q
  3. $dbuser='';
    & R9 {. f! o5 ~. h+ U# x6 ?7 K
  4. $dbpwd='';. T3 S. v0 @  V1 }! c- Y' Y
  5. $dbname='';
    9 Y: |6 _' U, U9 i+ ^3 l6 ~3 A
  6. $dbhost=';. a. n6 o8 g# E9 @
  7. $dbtable='';4 l7 T% R8 O5 w/ g( K

  8. / A, n6 a- M, P0 H3 z0 U' P& P
  9. //設置讀取路徑. y5 m9 J5 w9 H
  10. $rdcontent='xxxx.txt';
    " Q' w. |# n' ^* Y9 w: D6 |
  11. $rdtitle='xxxxtitle.txt';
    . t( k' D# B/ d/ |/ t- [
  12. $rdlink='xxxxlink.txt';
    1 F$ k; Y3 ^& |" H, u! O) u

  13. / r$ K. p' x$ n" s$ x6 R, [3 d4 ~
  14. //讀取插入鏈接,並設置發佈概率4 N6 U/ A2 V* F1 E
  15. function gen_link($rdlink){9 M) V/ K  k+ @0 b& w
  16.         $data2 = file($rdlink);
    . C7 n' J) p* y) @$ N4 N$ }% F
  17.         $num2 = count($data2);
    / s* P9 q2 x) I, t( Y) p8 Q7 Q
  18.         $id2= mt_rand(0,$num2-1);9 D" Y' e( `, V
  19.         $random= mt_rand(0,10);5 o( g/ g2 m4 u8 Z
  20.         if($random<5)) c! N4 O2 O* f0 O
  21.                 $link= trim($data2[$id2]);
    3 j* S& A" B* U% q
  22.         else4 B( F, q. M3 l# r
  23.                 $link="";
    " o! X: E9 f" T! Q3 D. M: {
  24.         return $link;% V  U5 Y1 u1 V+ L$ j
  25. }' k  A# P0 F7 x! X: {, D
  26. , Q4 R: u& c9 @3 @# y
  27. //生成文章
    / A5 v0 }5 Q6 G* s5 ?5 S4 O
  28. $str = "";1 Y3 J. }+ X% `' P: x
  29. $title = "";
    1 N6 M' K# P1 M+ j4 x* |
  30. + f  l. Y" }/ X6 K
  31. $data2 = file($rdtitle);
    7 k3 y. y" `: b4 S! x
  32. $num2 = count($data2);
    ! k! Y, z, m' [. X
  33. $id2 = mt_rand(0,$num2-1);4 C* h( C& D+ C8 o
  34. $title = $data2[$id2];% M6 e) [. b+ I" h9 ^
  35. " _1 a  Q7 p5 W* }% W
  36. $data = file($rdcontent);' r# [! B% Z, S
  37. $num = count($data);. j5 s4 v4 Q' |

  38. , Y4 E4 I/ d& v- T- v2 _6 l. Z- {0 m
  39. for($i=0;$i<25;$i++){/ ^: |" l; C4 n$ r* L% p
  40.         $temp=" ";
    8 B% o) {4 g5 @6 B; `- P' l
  41.         if(($i%5)==0)$ F7 o" i# A6 n/ C/ W- f( U, j
  42.                 $temp="
    % ?; X: B" l  n) F. S' x
  43. \n";
    : o' x# [% g" ^0 O4 p: d. {' @# j
  44.         elseif(($i==7)|($i==21)){
    ( u/ u# R/ L5 F2 k) G( O7 X
  45.                 $links=gen_link($rdlink);  B- g" ]) S0 s% n( v
  46.                 $str=$str." ".$links." ";
    ' I) g% }2 M9 X8 i0 ~& P, x
  47.         }
    7 Z  g6 z0 x- A8 S7 L& W
  48.         $id = mt_rand(0, $num-1);
      v+ Y( X4 \9 |
  49.         $line = trim($data[$id]);
    7 G! t( m; x, @% z
  50.         $str=$str.$temp.$line;5 J1 v; a1 W# a9 [3 |* F% m- s
  51. }
    - K3 O/ A- A0 A' y; _" I6 ~

  52. 9 l/ W6 y3 m. t# Q
  53. //生成slug* q2 P* U) H  t& o  P8 ?7 Q1 U
  54. function generate_slug($len){% L4 l) F; \; S1 e9 m$ `7 G, G( L
  55.         $chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    # n& X5 k+ C, J6 h! X
  56.         $slug="";% F, ]6 j" w( [: Y  e+ c  p
  57.         for($j=0;$j<$len;$j++){; R9 T$ i2 f$ _( E! A
  58.                 $slug .= $chars[ mt_rand(0, strlen($chars) - 1) ];
    3 Q  Z  g) B, i+ B: K
  59.         }% ~6 y8 T8 Y( J) Y" a
  60.         return $slug;
    4 X; X. I  h0 d- y- o/ v5 P
  61. }, D# k& d& i  w. p1 G, g8 q5 d
  62. $slug = generate_slug(17);
    ; L) l! `7 y3 t6 D) Y. S: O- |% a% C+ ]
  63. + h1 e& u$ P" k' A
  64. //獲取發佈時間
    ; c. y. O. w; K, E
  65. $datetime= date("Y-m-d H:i:s");
    . E' A; a" H4 q8 T/ O

  66. ( U# B6 R: j& B# J" j9 u8 o' R
  67. $sql= "INSERT INTO `$dbtable` (`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count`) VALUES (NULL, '1', '$datetime', '$datetime','$str','$title', '', 'publish', 'open', 'open', '', '$slug', '', '', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '', '0', '', '0', 'post', '', '0')";
    - m- E1 `. D1 i3 M% |
  68. 8 V1 J* b, G$ V: I; L
  69. //連接數據庫並處理數據4 ?/ p) ^5 s$ C& U
  70. $con = mysql_connect($dbhost,$dbuser,$dbpwd);
    # W' e- v: K8 X/ N
  71. if(!$con){, C5 m4 {8 [3 {  a8 H
  72.         die('Failed to connect to database! '.mysql_error());0 W: @4 y5 {4 e7 c
  73. }else: N, a) y, p* D# s4 \6 p
  74.         echo "Suscess to connect to database!* G9 r" |( _4 @9 o! L) S
  75. \n";
    5 N! o+ A- v% n" B
  76.   u& g. e) R: C. z
  77. mysql_select_db($dbname,$con);+ F1 f, @6 [5 z9 L

  78. ! y% G9 }) _% Q$ w
  79. $result=mysql_query($sql);
    ( C. |9 B0 l2 ]  \3 K1 J1 l
  80. ' q  L8 z% e- L, i: y" s
  81. mysql_close($con);, g, J5 h, y- T# O, m; x, H- _* S% I) y
  82.   R. `1 ~+ M6 N* t! @/ K7 T# ?
  83. if(!$result){7 y; B5 y" A7 J1 b# R" A
  84.         echo $result;
    , l" x5 a/ [( V: v: Y
  85.         die('Failed to post article! '.mysql_error());) ?0 H6 y. P+ T5 Y/ B) d
  86. }else, W$ m: ~2 R. f6 c# p6 b
  87.         echo "Suscess to post article!\n";
    1 G! S$ U% ]+ b2 d2 |" B

  88. , P% \' |8 D4 ~1 L- X1 V1 a
  89. echo $dbname." is done";8 O' K; a4 O2 |' E; |9 G

  90.   [/ }  J  I6 e5 w+ @
  91. ?>
複製代碼
文章插入到wp-posts表中,文章id自動生成,在插入時是未知的,所以就在插入文章的同時無法再將id 插入到wp_term_relationship , 這樣的結果是發佈的文章是無分類的。所以不太明白關於「讀取id」的方法,請指教。7 d" B( f/ }: D7 t
- A" O7 q% [0 a9 S1 Q) `! L
文章的slug我用了隨機生成的方法,其實最好的方法應該是用文章標題來轉化,但那樣麻煩些懶得費事。文章作者默認為1,就是管理員。文章內容我用了Yoo版的方法:http://www.advertcn.com/thread-12629-1-1.html。能保證原創性,但損失了可讀性,由於是做外鏈用的,應該關係不大。
9 Q; \4 \; ~$ H7 T* ~
! r( p9 W3 D, B$ {+ r如果想將文件夾下的文章隨機發佈的話,可以先將文件夾內文件遍歷,然後隨機抽取發佈的方法。5 a. p( T3 A+ c6 q2 c
這樣做成php頁面,某站目錄下,使用VPS的Crontab 用curl語法定時向該url發出請求,就可自動發佈一篇文章,如果想要多篇的話,可以使用循環。
# }! F" n9 {6 Y' o% Q. f+ n* a8 l( j0 H3 b( G

4 G7 P7 M, |1 [, w) r
. Z; z' g8 Y% q5 X; h. H  o, v. B8 o( o, t/ ^5 [1 j1 M
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-3 22:37:54 | 顯示全部樓層
  1. 4 X* Z: r2 f1 E8 H- r8 ^
  2. <?php4 I( g" g& C7 x- A% f+ Y( [$ N8 _
  3. //數據庫參數
    7 Q' z. ^, V, ?& e; [
  4. $$dbuser='';( g3 z7 n' a7 F
  5. $$dbpwd='';
    9 L) ^% ]! n: I
  6. $$dbname='';
    ) m. o* @% c& g( a: [# I1 P" Y2 M
  7. $$dbhost='';
    ( A) b7 C# N# r9 I
  8. $$dbtable='';
    0 a) Q5 N+ }' s" @! m
  9. " x& p6 Q! {3 L
  10. //設置讀取路徑4 X4 n6 [; j+ `$ a
  11. $$rdcontent='xxxx.txt';1 I/ l& _3 Y% G- T$ R/ w9 Q7 w' |
  12. $$rdtitle='xxxxtitle.txt';. {8 n1 T( e: Z
  13. $$rdlink='xxxxlink.txt';
    ' @4 C0 l: S2 G- w0 U
  14. , Y1 W8 t: h( ]/ `8 m6 g
  15. //讀取插入鏈接,並設置發佈概率
    : @$ i+ o" j; j- C7 Y! B& M
  16. function gen_link($$rdlink){: Q3 q( r0 Q6 [
  17.         $$data2 = file($$rdlink);6 A  A" e5 Y: G: J4 b, E
  18.         $$num2 = count($$data2);
    * e" L$ C( x2 L) V; u
  19.         $$id2= mt_rand(0,$$num2-1);- W  s& z/ H( ~% K: ]* [/ l
  20.         $$random= mt_rand(0,10);
    8 j1 p+ r8 `+ O  A
  21.         if($$random<5)
    ) P" N3 x+ W* k: ^4 Q0 R
  22.                 $$link= trim($$data2[$$id2]);5 _; l) g4 ?- W( o5 C4 Z) f& r
  23.         else
    6 r* Y# r, V: s9 D) U) w; r0 e
  24.                 $$link="";
    3 R) `/ S5 `* f2 F8 _* |9 M( l
  25.         return $$link;1 v3 S" I  C' w" P+ ?
  26. }
    . A1 @4 p! B+ G8 m( o, c; v' H6 p
  27. ; a1 n! N# B( l2 }3 n
  28. //生成文章
    : {% C# H4 }2 n( b( `! \# s2 I8 U
  29. $$str = "";
      t+ V) d! s+ _6 R# n! M2 H
  30. $$title = "";$ Z& y' a8 ?# c9 _  E/ X. R8 m6 l
  31. 5 s( j/ v  E! q, k; L$ ~. M* D
  32. $$data2 = file($$rdtitle);8 B& m: E! J& e! Z% C& `, G+ y9 G% o
  33. $$num2 = count($$data2);
    3 w) z1 l3 q7 x( r$ I
  34. $$id2 = mt_rand(0,$$num2-1);5 Z0 N8 L0 V' D3 P. `4 K# F
  35. $$title = $$data2[$$id2];
    ( Q: [2 g! G2 y! a" @# W
  36. " {/ I9 k! s, a/ G. C5 u" \) ]
  37. $$data = file($$rdcontent);
    ; l# P5 k3 H2 N3 b8 m
  38. $$num = count($$data);" ?$ ]5 |: A* g; T9 g$ f& J0 H
  39. 5 o" [% j8 g* f% J) Q( X2 V7 y& ~
  40. for($$i=0;$$i<25;$$i++){4 i2 }; W. T& T& {1 x" o$ J
  41.         $$temp=" ";1 e% P, I) o$ u) G/ U
  42.         if(($$i%5)==0)1 r# I0 E' L3 I+ q3 Z. G
  43.                 $$temp="1 v5 U3 G- @- R3 K
  44. \n";% P, j& f' i- E* M! w& X
  45.         elseif(($$i==7)|($$i==21)){
    ( |+ W" E: v& g8 b. T
  46.                 $$links=gen_link($$rdlink);
    ! U' l5 L* g; X9 l
  47.                 $$str=$$str." ".$$links." ";2 T9 ?2 I0 V! Q9 {  U) l& w
  48.         }
    6 t! Q0 F3 t" |- {
  49.         $$id = mt_rand(0, $$num-1);
    - t' [+ D+ T5 I; I7 ?
  50.         $$line = trim($$data[$$id]);
    # N, U) v8 E9 \7 K+ Z. \
  51.         $$str=$$str.$$temp.$$line;5 o3 ?3 p5 ]3 o& W1 d: o+ f
  52. }
    + |9 q- Q) A, \7 O" G& w

  53. ( ^7 a' q. s! ^; N
  54. //生成slug
    * J" P/ p4 Q5 v/ W. `/ V" G, D
  55. function generate_slug($$len){8 B; y+ h. Y6 e$ P1 ~8 S
  56.         $$chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    % d1 B" l- Z4 N- }2 T3 [9 z
  57.         $$slug="";
    * A+ v3 R. l% K/ W* V; ~' Z; j
  58.         for($$j=0;$$j<$$len;$$j++){& g. r* g* G/ q
  59.                 $$slug .= $$chars[ mt_rand(0, strlen($$chars) - 1) ];
      w0 G* j" y/ ?
  60.         }
    4 X  p7 ?# I2 a3 O
  61.         return $$slug;
    ' y$ E  D3 y# y
  62. }
    % D3 U& a' k7 {- t; c
  63. $$slug = generate_slug(17);4 Z" V) A  o2 S0 C" I4 ~* r0 U

  64. 1 S7 n  V. _- P# M
  65. //獲取發佈時間9 h; T. e2 l  h% `' ?, X8 C
  66. $$datetime= date("Y-m-d H:i:s");, T  ~# Q8 h( y$ ]7 D8 R7 S' h
  67. ' Z& w+ p! U; ?
  68. $$sql= "INSERT INTO `$$dbtable` (`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count`) VALUES (NULL, '1', '$$datetime', '$$datetime','$$str','$$title', '', 'publish', 'open', 'open', '', '$$slug', '', '', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '', '0', '', '0', 'post', '', '0')";$ s# \" w, q$ }# C1 Z4 q% p8 i

  69. , p: J7 F( M5 h3 J" ?& {& {
  70. //連接數據庫並處理數據4 c, Z% b+ ~6 I; z
  71. $$con = mysql_connect($$dbhost,$$dbuser,$$dbpwd);- g. u' ?$ `2 g4 D" J- d( i
  72. if(!$$con){' I  m% ?/ A8 s$ U4 ^; v3 C! R
  73.         die('Failed to connect to database! '.mysql_error());) E9 h( B2 d( v* A
  74. }else
    5 ?" ]. r8 ]  g+ o( l# X! Q
  75.         echo "Suscess to connect to database!- \4 H. w; E# g( c
  76. \n";0 V, A1 t' o. w% y
  77. ; d" p8 t) R+ P- Q( p/ ?& w
  78. mysql_select_db($$dbname,$$con);# w- F% l  D$ P9 U6 c
  79. $ }* b7 x) j3 w2 [
  80. $$result=mysql_query($$sql);
    + D! j% \1 W- b. a, l7 F

  81. : b6 r/ ^" j. m, [6 h) I5 F2 `
  82. 6 z8 t& q9 f* }' u7 o4 y
  83. //前面已經插入,獲取插入id
    8 Q& V5 o' A; |7 k
  84. $$insert_id = mysql_insert_id();
    % z- `% |3 }4 r( A& j/ _8 H1 t% d

  85. & j1 v/ b- R4 y- W4 b7 p- C/ J$ T
  86. //繼續插入wp_term_relationship表
    ; x9 A0 x! ^) H( A; N
  87. if($$insert_id > 0 ){
    ! R: {" u; u6 b$ ~& s
  88.         $$sql= "INSERT INTO `$$dbtable` (`object_id`, `term_taxonomy_id`, `term_order`) VALUES (NULL, '$$insert_id', NULL)";$ x4 V: M$ m- ?
  89. 8 f7 ?. k9 k1 C2 Z4 ^
  90.         $$result=mysql_query($$sql);6 y3 L& F3 o8 i5 n4 c9 J' I# Y" p% Y
  91. }
    + m' `9 S7 i) t9 u! ?4 ^8 x3 J
  92. //關閉數據庫連接
    , [; z1 p2 P( _. o  Q. {1 K4 V0 E- x
  93. mysql_close($$con);
    : y* O0 X- t, s0 K5 o7 R

  94. 5 p6 L% e& O9 d' W1 X
  95. 1 M& m2 l$ }2 I  _3 h  R
  96. - T2 M0 h$ x+ w! Y, ?7 u! n
  97. if(!$$result){
    5 e$ b- W: W% e
  98.         echo $$result;
    ( D# T& `2 D2 c/ x& G. B7 A& x
  99.         die('Failed to post article! '.mysql_error());4 m% u5 ~0 ^4 Y- \
  100. }else
    ( i! U: p: T2 I7 R6 Q, M
  101.         echo "Suscess to post article!\n";
    4 V+ y' ?$ r. M  d

  102. 6 [# J8 W3 Z. v  A$ H  x
  103. echo $$dbname." is done";; S' w4 h+ V8 r5 W" m& L; P

  104.   R7 W6 A" ^! x/ P2 I6 L1 U
  105. ?>
    % \9 ^4 Y+ Y& F. c

  106. 0 F# y+ {* S' w4 {$ M2 C+ D

  107. 0 ]7 _; |4 l9 u, |" |4 a$ W
  108. 0 d- ^: Y& p/ t% z) u: U; [

  109. : z. e4 T6 Y3 b: q+ X7 R* w
複製代碼
代碼給你改了下,wp_term_relationship表插入的值,你應該還需要改一下,因為我已經忘了這幾個表的關係了,剩下你的分享很好,我們一般使用付費cronjob,因為這種東西穩定性很重要,可以搜索setcronjob
! e! }- i. s0 c/ ~4 N1 A# m
9 W3 ^8 ~% T. `& H9 C3 N& ~" D; ?7 `! r# J$ ^
如果你需要第1次插入的某些值,你需要在if($insert_id > 0 )下面再增加一個select的查詢; r* h2 \# o  o2 L" I
前面既然都是插入的內容,那麼插入的內容事先就已經知道的,所以沒有必要做這個select查詢5 T" H6 M+ {; S
& c- N8 u0 Y2 m) f& Y& l0 v" U

評分

參與人數 1點點 +4 收起 理由
hudba + 4 admire;)

查看全部評分

回復 给力 爆菊

使用道具 舉報

發表於 2013-12-4 08:41:01 | 顯示全部樓層
我之前是使用wp內容函數搞定的,效率比直接插sql慢些,但勝在穩定,基本不出問題2 q$ W) |; N# _0 L0 E( g2 e
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-4 09:32:15 | 顯示全部樓層
你可以分兩步來處理,先插入文章,再導出文章ID,更新目錄.0 N4 D( Y7 h- l* O1 Z5 ~6 a3 e7 X
你可以查看mysql那幾個常用的指令。
) z: r  t) I# r& E8 A5 R* r1 v* M  h5 D+ k# z! M, V5 @
回復 给力 爆菊

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 免费注册

本版積分規則

过期高净值品牌域名预定抢注

4um點基跨境網編創業社區

GMT+8, 2024-11-25 11:56

By DZ X3.5

小黑屋

快速回復 返回頂部 返回列表