鍍金池/ 問答/ PHP問答
萌面人 回答

自己瞎寫的一個(gè)關(guān)于超級(jí)初級(jí)的數(shù)據(jù)表建立的一個(gè)總結(jié)

你可以簡(jiǎn)單看一下,因?yàn)橐仓皇呛?jiǎn)略寫,但建立數(shù)據(jù)表,無非是,確立你需要哪些表,而這些你是明確的。然后是確定每個(gè)表與表之間的關(guān)系,明確后可以建立對(duì)應(yīng)的關(guān)聯(lián)甚至關(guān)系表。更多的需要根據(jù)具體的需求,以及個(gè)人經(jīng)驗(yàn)積累,或者系統(tǒng)學(xué)習(xí)吧。我的知識(shí)只支持我說道這么一些了。

安淺陌 回答

我的1.0的也是,后來直接刪了

青檸 回答

先隱藏內(nèi)容, css, js加載完以后再顯示.

一般SMS接口發(fā)送以后會(huì)直接返回是否發(fā)送成功的結(jié)果,
有了這個(gè)以后無需去判斷用戶收沒收到

毀了心 回答

php就用array_diff就可以

a少的:

array_diff($b, $a);

反過來,就是a多的:

array_diff($a, $b);

返回一個(gè)數(shù)組.

https://secure.php.net/manual...

選擇 回答
    public function msgId($spid, $sqid)
    {
        $timeStr = time();
        //echo bindec(sprintf("%04s%05s%05s%06s%06s%022s%016s",decbin(date('m', $timeStr)),decbin(date('d', $timeStr)),decbin(date('H', $timeStr)),decbin(date('i', $timeStr)),decbin(date('s', $timeStr)),decbin($spid), decbin($sqid)));
        return bindec(sprintf("%04s%05s%05s%06s%06s%022s%016s",decbin(date('m', $timeStr)),decbin(date('d', $timeStr)),decbin(date('H', $timeStr)),decbin(date('i', $timeStr)),decbin(date('s', $timeStr)),decbin($spid), decbin($sqid)));
    }

    $this->msgId('600010','2');

在這里面給你糾正一下思路
第一: 64里面只能存0-1之間的數(shù)值,也就是說都是2進(jìn)制數(shù)據(jù)
所以拼接一下2進(jìn)制數(shù)據(jù)就好了

月份(1-12)(【0001-1100】區(qū)間 4位)decbin(date('m', $timeStr))
日(1-31)(【00001-11111】區(qū)間 5位)decbin(date('d', $timeStr))
時(shí)(1-24)(【00001-11000】區(qū)間 5位)decbin(date('H', $timeStr))
分(1-59)(【000001-111011】區(qū)間 6位)decbin(date('i', $timeStr))
秒(1-59)(【000001-111011】區(qū)間 6位)decbin(date('s', $timeStr))
網(wǎng)關(guān)代碼(【0~0 - 1~1】22位)decbin($spid1)
// (如果這個(gè)網(wǎng)關(guān)代碼是22位0和1組成就不用decbin,本身就是2進(jìn)制了,如果不是的話,就變成二進(jìn)制)
序列號(hào)(區(qū)間 16位)decbin($spid2)

網(wǎng)關(guān)代碼多少位我沒洗數(shù),序列號(hào),什么的位數(shù)你自己調(diào)就行了%04d%06d%05d%06d%06d【%021d%016d】<-這里 如果沒算錯(cuò)的話是4+5+5+6+6+22+16應(yīng)該是64位了,那么這64位是一個(gè)2進(jìn)制的字符串,用bindec()轉(zhuǎn)換成十進(jìn)制的數(shù)值,存進(jìn)數(shù)據(jù)庫里面,那么數(shù)據(jù)庫存貯的2進(jìn)制數(shù)據(jù)就是符合你要的規(guī)定了,而且10進(jìn)制數(shù)據(jù),8位,64字節(jié),完美

變量名用點(diǎn)心$spid, $sqid 我以為是一個(gè)

下面這種方法也是簡(jiǎn)單,邏輯上不好理解,但是還是挺簡(jiǎn)單的,學(xué)習(xí)了

$messageId = 0;
$messageId |= $m << 60;
$messageId |= $d << 55;
$messageId |= $h << 50;
$messageId |= $i << 44;
$messageId |= $s << 38;
$messageId |= $spid << 16;
$messageId |= $sqid & 0xff;
echo $messageId
愿如初 回答

在使用

npm install

前先手動(dòng)建立一個(gè) node_modules 目錄,如果此時(shí)目錄顯示為 黃色圖標(biāo) 就不用管了 已經(jīng)忽略索引了。

如果沒有 就右鍵一下目錄 選擇 Mark Directory as 選擇 exclusion

然后重啟,如果還說會(huì)索引 就點(diǎn)擊 左上角 「File」>「invalid Caches/Restart...」 重置索引 重啟PHP Storm

喵小咪 回答

數(shù)據(jù)寫到send()里

玩控 回答

加一個(gè)時(shí)間戳作為參數(shù)看看

浪蕩不羈 回答

1 使用相對(duì)目錄,并且能自動(dòng)創(chuàng)建缺失的目錄和文件。
2 使用配置的方式要求指定。
3 如果文件就是臨時(shí)使用,請(qǐng)使用tempfile模塊把文件創(chuàng)建到/tmp系統(tǒng)臨時(shí)目錄。

亮瞎她 回答

你應(yīng)該是在同一個(gè)控制器寫了一個(gè)新的方法 原有的資源控制器覆蓋了你新寫的路由

吢涼 回答

url帶參數(shù)不應(yīng)該是這樣的嗎:http://www.url.com/page.php?k...

孤星 回答

好久沒看到想答的問題了,來一波

a. 這個(gè)問題和redis毫無關(guān)系

b. 上代碼

<?php
//splat.php
function gen() {
  global $argv;
  $max = $argv[1];
  while($max--) {
    yield(str_repeat('x', 10000));
  }
}

function noop() {

}

function getargs() {
  $arg = func_get_args();
}

function splat(...$arg) {

}

function printmemory($msg) {
  printf("%s: %d/%d\n", $msg, memory_get_usage(), memory_get_peak_usage());
}

printmemory(__LINE__);
$gen = gen();
printmemory(__LINE__);
foreach(gen() as $r) {
  crc32($r);
}
printmemory(__LINE__);
$argv[2](...$gen);
printmemory(__LINE__);
~/Desktop $ php splat.php 10000 getargs
27: 357896/394272
29: 358504/394272
33: 370816/394272
35: 382912/123779064
~/Desktop $ php splat.php 10000 noop
27: 357896/394272
29: 358504/394272
33: 370816/394272
35: 382912/123250912
~/Desktop $ php splat.php 10000 splat
27: 357896/394272
29: 358504/394272
33: 370816/394272
35: 382912/123779064
~/Desktop $ php splat.php 1000 splat
27: 357896/394272
29: 358504/394272
33: 370816/394272
35: 382912/12695544
~/Desktop $ php splat.php 100 splat
27: 357896/394272
29: 358504/394272
33: 370816/394272
35: 382912/1607672

c. 解釋

27-29-33之間,幾乎沒有內(nèi)存占用,這是所謂的"生成器節(jié)省內(nèi)存”的現(xiàn)象,也就是各種相關(guān)文章里都會(huì)解釋的,在30行迭代生成器的時(shí)候,每次循環(huán)都會(huì)進(jìn)到生成器內(nèi)部去yield一次,產(chǎn)生一個(gè)大字符串,下次循環(huán)的時(shí)候循環(huán)變量又重新被賦值,之前的字符串自然會(huì)被GC回收,所以無論循環(huán)多大多少次,占用的內(nèi)存是穩(wěn)定的(包括上面的$gen=gen()也是幾乎不占內(nèi)存的)

33-35,無論被調(diào)用的函數(shù)如何,甚至noop函數(shù),都一樣會(huì)占用大量?jī)?nèi)存,占用內(nèi)存的量明顯和次數(shù)成正比,也就是說生成器的內(nèi)容被合并到一起而占用了一整塊內(nèi)存。這其實(shí)很容易解釋,幾乎的所有語言“調(diào)用函數(shù)”的過程都是類似的

  1. 首先計(jì)算所有參數(shù),形成參數(shù)列表
  2. 生成call frame(其中包含調(diào)用被調(diào)雙方、文件行號(hào)、參數(shù)列表等等信息),壓入call stack中
  3. 控制權(quán)移交給函數(shù)內(nèi)部

(當(dāng)然省略了超級(jí)多的細(xì)節(jié),比如實(shí)參形參的映射/copy啊,內(nèi)存管理啊等等什么的,和本題無關(guān))

...$args這個(gè)操作符其實(shí)影響的就是第一個(gè)階段,計(jì)算參數(shù)的時(shí)候,看到...操作符,就需要展開其中的參數(shù)來形成參數(shù)列表,那么用生成器的場(chǎng)合,這個(gè)階段內(nèi)存就從原有生成器的少量占用變成了完整的占用了,所以即使是空的noop函數(shù)也會(huì)占用幾乎一樣多的內(nèi)存,你的理解是正確的

回到原題的那個(gè)redis問題的話,因?yàn)橹貜?fù)調(diào)用redis方法一定會(huì)占用大量的額外網(wǎng)絡(luò)開銷,而一次性批量插入又鐵定逃不開內(nèi)存占用(其實(shí)你想redis擴(kuò)展要發(fā)送這個(gè)批量的指令給redis,那么這塊內(nèi)存肯定是要的),比較好的方式就是分組了,每1000個(gè)或者10000個(gè)合并成一次$redis調(diào)用,mysql也好其他場(chǎng)景也是類似的

爆扎 回答

由于微信方面出于安全考慮,給出的數(shù)據(jù)都是大概的距離,只能估計(jì)。方法如下,前提這個(gè)人靜止,本人拿手機(jī)通過查看附近的人,記下與該人的距離,然后在其他兩個(gè)地方,再次查看附近的人,記下距離。以每次本人點(diǎn)為圓心,距離為半徑畫圓,三者的交點(diǎn)就是那個(gè)人的位置。精度應(yīng)該是一個(gè)描述這差異范圍的值。

替身 回答

不會(huì),PHP 的一個(gè)腳本就是一個(gè)進(jìn)程,除非在里面用調(diào)用系統(tǒng)函數(shù)顯式的 fork 進(jìn)程出來。

卟乖 回答

我的好像也是報(bào)這個(gè)錯(cuò) ,不過make install 還是安裝成功的(在/usr/local/php/bin/php里面)

php和js數(shù)據(jù)傳輸一般是將array轉(zhuǎn)成json格式字符串輸出,js使用ajax得到j(luò)sondata之后
var arr = eval('('+jsondata+')');//得到數(shù)組arr[1] arr['name']這樣調(diào)用

巷尾 回答

不要在循環(huán)里面放Sql語句,可以把$row['prod_id']單獨(dú)拿出來,sql語句可以寫成wherein